数组里面多个对象 对象里面多个元素 怎么把属性一样的元素全部拿出来组成一个新对象
时间: 2024-02-07 18:02:26 浏览: 59
可以使用 JavaScript 中的 Array.reduce() 方法来实现。具体步骤如下:
1. 遍历数组中的每个对象,将属性值相同的元素组成一个新的对象。
2. 在遍历数组时,使用一个空对象作为 reduce() 方法的初始值。
3. 对于每个对象,将其属性值作为新对象的键,如果该键已经存在,则将该元素添加到该键对应的数组中,否则创建一个新的数组并将该元素添加到其中。
4. 最后,返回新的对象。
以下是一个示例代码:
```
const arr = [
{id: 1, name: 'Tom', age: 20},
{id: 2, name: 'Jack', age: 22},
{id: 3, name: 'Tom', age: 23},
{id: 4, name: 'Lucy', age: 21},
{id: 5, name: 'Jack', age: 25},
];
const result = arr.reduce((acc, cur) => {
const {name, ...rest} = cur;
if (!acc[name]) {
acc[name] = [rest];
} else {
acc[name].push(rest);
}
return acc;
}, {});
console.log(result);
// 输出:
// {
// "Tom": [
// {"id": 1, "age": 20},
// {"id": 3, "age": 23}
// ],
// "Jack": [
// {"id": 2, "age": 22},
// {"id": 5, "age": 25}
// ],
// "Lucy": [
// {"id": 4, "age": 21}
// ]
// }
```
在这个示例中,我们将每个对象的 name 属性作为新对象的键,如果该键已经存在,则将该对象添加到该键对应的数组中,否则创建一个新的数组并将该对象添加到其中。最终得到的新对象中,每个键对应的值都是一个数组,包含了属性值相同的所有元素。
阅读全文