js两个数组根据相同id放入另一个数组的子级里
时间: 2023-10-07 20:14:19 浏览: 182
可以使用 JavaScript 的 Array.prototype.map() 和 Array.prototype.find() 方法实现将两个数组根据相同的 id 放入另一个数组的子级里。
假设有两个数组 arr1 和 arr2,它们的元素具有一个共同的属性 id。我们要将 arr2 中的元素根据相同的 id 放入 arr1 的子级属性 children 中。
可以按照以下步骤进行操作:
```javascript
// 假设 arr1 和 arr2 是两个原始数组
const arr1 = [
{ id: 1, name: 'A', children: [] },
{ id: 2, name: 'B', children: [] },
{ id: 3, name: 'C', children: [] }
];
const arr2 = [
{ id: 1, value: 'X' },
{ id: 2, value: 'Y' },
{ id: 2, value: 'Z' },
{ id: 4, value: 'W' }
];
// 使用 map() 方法遍历 arr1
const result = arr1.map(item => {
// 使用 find() 方法在 arr2 中查找与当前元素相同 id 的元素
const matchingItem = arr2.find(element => element.id === item.id);
// 如果找到匹配的元素,则将其加入当前元素的 children 属性中
if (matchingItem) {
item.children.push(matchingItem);
}
return item;
});
console.log(result);
```
上述代码首先遍历 arr1,然后使用 find() 方法在 arr2 中查找与当前元素相同 id 的元素。如果找到匹配的元素,则将其添加到当前元素的 children 属性中。最后返回处理后的结果数组。
运行以上代码,会输出以下结果:
```javascript
[
{ id: 1, name: 'A', children: [ { id: 1, value: 'X' } ] },
{ id: 2, name: 'B', children: [ { id: 2, value: 'Y' }, { id: 2, value: 'Z' } ] },
{ id: 3, name: 'C', children: [] }
]
```
在这个例子中,arr1 的每个元素都有一个空的 children 属性。通过遍历 arr1,并使用 find() 方法在 arr2 中查找匹配的元素,将匹配的元素添加到对应的 children 属性中。最后得到的结果是一个包含子级的新数组。
阅读全文