如果我想要得到以下结果,是否有人知道函数应该是什么样子:
在:
{
3: [ "1-2", "4-5" ],
4: [ "1-2", "6-9" ]
}输出:
{
3: [ "4-5" ],
4: [ "1-2", "6-9" ]
}我希望删除所有重复的值,并将最后出现的值保留在对象中。如果属性中没有剩余的元素,则应将其删除。我尝试了https://stackoverflow.com/a/9229821/3852382的建议,但没有解决我的问题。
发布于 2017-08-12 23:15:31
我认为你可以用下面的方法来完成
let obj = {
3: [ "1-2", "4-5" ],
4: [ "1-2", "6-9" ]
};
let reverseMap = {};
for(property in obj){
for(let element of obj[property]){
if(reverseMap[element] == undefined || reverseMap[element] == null){
;
}
else {
obj[reverseMap[element]].splice(obj[reverseMap[element]].indexOf(element), 1);
}
reverseMap[element] = property;
}
}
console.log(obj);
发布于 2017-08-13 06:13:27
你可以这样做:
var obj = {3: [ "1-2", "4-5" ], 4: [ "1-2", "6-9" ]},
res = Object.keys(obj)
.reduceRight((m,k) => obj[k].reduce((t,e) => t[e] ? t
: (t[e] = true, (t.r[k] = t.r[k] ? t.r[k].concat(e)
: [e]), t), m), {r:{}}).r;
console.log(res);
https://stackoverflow.com/questions/45651501
复制相似问题