![](/img/trans.png)
[英]Remove duplicates from javascript objects array based on object property value
[英]How to remove duplicates from an array object property value?
如何遍历对象属性并从作为该对象属性值的数组中删除重复项?
原始物件
var navObjects = {
'Components': ['x', 'y', 'x'],
'Document': ['z', 'z', 'z', 'q'],
'Utilities': ['a', 'b', 'c']
}
所需对象
navObjects: {
'Components': ['x', 'y'],
'Document': ['z','q'],
'Utilities': ['a', 'b', 'c']
}
我尝试过的
for (let i = 0; i < Object.values(navObjects).length; i++) {
let obj = Object.values(navObjects)[i];
Object.values(obj).filter((item, index) => obj.indexOf(item) === index);
console.log(obj);
}
运行此块后,阵列保持不变。
该代码将帮助您实现目标。
var newNavObjects = {}
var existObjects = {}
for(let key in navObjects) {
let objects = navObjects[key];
newNavObjects[key] = [];
existObjects[key] = {};
for(let object of objects) {
if (!existObjects[key][object]) {
existObjects[key][object] = 1;
newNavObjects[key].push(object);
}
}
}
delete existObjects;
console.log(newNavObjects);
我创建新变量以提高效率。 如果我们使用indexOf检查数组中是否存在不存在的值。 在这种情况下,它将比我们检查目标变量键重。 仍然这不是最好的解决方案,但是可以肯定。 :)
您可以创建一个Set
来删除重复项并获取values()
,以便将其转换回数组,例如:
(new Set(['z', 'z', 'z', 'q'])).values()
让我们对其function
:
function removeDuplicates(input) {
return (new Set(input)).values();
}
然后使用它:
var navObjects = {
'Components': removeDuplicates(['x', 'y', 'x']),
'Document': removeDuplicates(['z', 'z', 'z', 'q']),
'Utilities': removeDuplicates(['a', 'b', 'c'])
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.