js将数组中对象id一致的数据转成二维数组
时间: 2023-12-09 19:02:42 浏览: 86
js一维数组与三维数组互动,数据转换,类似购物车添加删除
假设我们有一个数组arr,其中包含多个对象,每个对象都有一个id属性。现在需要将id属性一致的对象放到一个二维数组中。
可以使用forEach()方法和对象的id属性来实现:
```
let arr = [
{id: 1, name: 'A'},
{id: 2, name: 'B'},
{id: 1, name: 'C'},
{id: 3, name: 'D'},
{id: 2, name: 'E'}
];
let result = [];
arr.forEach((obj) => {
let index = result.findIndex((subArr) => subArr[0].id === obj.id);
if (index === -1) {
result.push([obj]);
} else {
result[index].push(obj);
}
});
console.log(result);
```
输出结果为:
```
[
[{id: 1, name: 'A'}, {id: 1, name: 'C'}],
[{id: 2, name: 'B'}, {id: 2, name: 'E'}],
[{id: 3, name: 'D'}]
]
```
解释一下上面的代码:
1. 首先定义一个空数组result,用来存放最终的二维数组。
2. 然后使用forEach()方法遍历原始数组arr中的每个对象。
3. 对于每个对象,先使用findIndex()方法在result中查找是否已经有一个子数组的第一个元素的id属性和该对象的id属性一致。
4. 如果没有找到,则说明该对象是一个新的id,需要创建一个新的子数组,将该对象放进去,并将该子数组加入到result中。
5. 如果找到了,则说明该对象和某个子数组中的对象id一致,直接将该对象加入到该子数组中即可。
6. 最终得到的result就是所求的二维数组。
阅读全文