js 数组对象,根据对象中某个字段相同的值,进行跟对象的id相匹配,匹配成功后组成新的数组对象
时间: 2024-11-06 17:15:23 浏览: 29
在JavaScript中,如果你有一个包含多个对象的数组,每个对象都有一个特定的字段(比如"field")和其他属性(如"id"),你可以使用`filter()`、`reduce()`或者`map()`方法结合循环来实现这个目标。假设你有一个这样的数组:
```javascript
let arr = [
{ id: 1, field: 'value1', otherProp: 'prop1' },
{ id: 2, field: 'value1', otherProp: 'prop2' },
{ id: 3, field: 'value2', otherProp: 'prop3' },
// 更多对象...
];
```
你可以通过以下步骤获取按"field"值分组并保留对应"id"的新数组:
```javascript
let groupedArr = arr.reduce((acc, obj) => {
if (!acc[obj.field]) acc[obj.field] = [];
acc[obj.field].push({ ...obj, groupId: obj.field }); // 这里groupId是一个临时标识,可以替换为你实际需要的字段名
return acc;
}, {});
// 现在groupedArr将是一个对象,键是field值,值是包含该field值的对象数组,例如:
// groupedArr = {
// value1: [{ id: 1, field: 'value1', otherProp: 'prop1', groupId: 'value1' }, { id: 2, field: 'value1', otherProp: 'prop2', groupId: 'value1' }],
// value2: [{ id: 3, field: 'value2', otherProp: 'prop3', groupId: 'value2' }]
// };
```
阅读全文