js代码:数组格式如下 [{id:1,value:[{A:1,B:2,C:3},{A:1,C:3,B:2},{A:1,B:2,C:4},{A:2,B:2,C:3}]}],则修改为 [{id:1,value:[{A:1,B:2,C:3},{A:1,B:2,C:4},{A:2,B:2,C:3}]}],valueduixia对象不固定为A,B,C三项,而是很多项
时间: 2023-08-19 21:17:36 浏览: 82
可以使用 JavaScript 中的 Array.prototype.map() 和 Array.prototype.reduce() 方法来实现:
```js
const arr = [
{
id: 1,
value: [
{ A: 1, B: 2, C: 3 },
{ A: 1, C: 3, B: 2 },
{ A: 1, B: 2, C: 4 },
{ A: 2, B: 2, C: 3 }
]
}
];
const result = arr.map(item => ({
id: item.id,
value: item.value.reduce((acc, cur) => {
const keys = Object.keys(cur);
const newObj = keys.reduce((obj, key) => {
if (acc.every(item => item[key] !== cur[key])) {
obj[key] = cur[key];
}
return obj;
}, {});
acc.push(newObj);
return acc;
}, [])
}));
console.log(result); // [{id:1,value:[{A:1,B:2,C:3},{A:1,B:2,C:4},{A:2,B:2,C:3}]}]
```
这段代码中,我们首先使用 map() 方法遍历原数组中的每一个对象,然后使用 reduce() 方法对每一个对象中的 value 数组进行去重操作。具体的实现过程是:对于每一个对象,我们先使用 Object.keys() 方法获取该对象中的所有属性名,然后再使用 reduce() 方法遍历这些属性名,对于每一个属性名,我们判断在结果数组中是否已经存在该属性名对应的值,如果不存在,则将该属性名和对应的值添加到一个新的对象中,最后将该新对象加入到结果数组中。这样就实现了对原数组中的重复项的去除。
阅读全文