如何遍历对象属性并从作为该对象属性值的数组中删除重复项?

原始物件

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);

}


运行此块后,阵列保持不变。

最佳答案

您可以使用Set构造函数和spread syntax来实现:



const navObjects = {
  'Components': ['x', 'y', 'x'],
  'Document': ['z', 'z', 'z', 'q'],
  'Utilities': ['a', 'b', 'c']
};

for (const key in navObjects) {
  navObjects[key] = [...new Set(navObjects[key])];
}

console.log(navObjects);

09-30 19:29