js 一个由有{id:‘’,name:‘’}属性的对象组成的数组,如果其中对象的name值一致,则合并两个对象,新对象的id等于name
时间: 2024-02-13 19:04:30 浏览: 21
你可以使用 JavaScript 中的 reduce 方法来实现这个需求。具体做法是:
1. 遍历数组中的每个元素。
2. 判断当前元素的 name 是否已经在之前的元素中出现过。
3. 如果出现过,则将两个元素合并,新元素的 id 属性设置为 name。
4. 如果没有出现过,则将当前元素添加到结果数组中。
5. 返回最终的结果数组。
下面是一个示例代码:
```javascript
const data = [
{ id: '1', name: 'foo' },
{ id: '2', name: 'bar' },
{ id: '3', name: 'foo' },
{ id: '4', name: 'baz' },
];
const result = data.reduce((acc, cur) => {
const existing = acc.find((item) => item.name === cur.name);
if (existing) {
existing.id = cur.name;
} else {
acc.push(cur);
}
return acc;
}, []);
console.log(result);
// Output: [
// { id: 'foo', name: 'foo' },
// { id: 'bar', name: 'bar' },
// { id: 'baz', name: 'baz' }
// ]
```
在这个示例中,我们使用 reduce 方法将每个元素合并到结果数组中。我们通过 find 方法查找已经存在的元素,如果存在,则将当前元素合并到已存在的元素中,否则将当前元素添加到结果数组中。最终,我们得到了一个合并后的数组。注意,这个示例中并没有考虑到合并后的 id 可能会与其他元素的 id 冲突,这个问题需要根据实际需求进行处理。