数组里面多个对象 每个对象里面都有一个name 对象里面多个元素 怎么把name的值全部拿出来组成一个新对象
时间: 2024-02-11 12:05:38 浏览: 119
可以使用 JavaScript 的 Array.map() 方法结合 Set 对象来实现。具体步骤如下:
1. 使用 Array.map() 方法遍历数组,返回一个新数组,其中每个元素都是一个对象的 name 属性值。
2. 使用 Set 对象去重,得到一个包含所有不重复 name 值的数组。
3. 遍历不重复 name 值的数组,将每个 name 值作为键创建一个新对象,并将该键对应的值设置为空数组。
4. 再次遍历原数组,将每个对象的 name 属性值作为键,将该对象添加到该键对应的数组中。
5. 最后得到的新对象中,每个键对应的值都是一个数组,包含了所有具有相同 name 属性值的对象。
以下是一个示例代码:
```
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 names = arr.map(item => item.name);
const uniqueNames = [...new Set(names)];
const result = {};
uniqueNames.forEach(name => {
result[name] = [];
});
arr.forEach(item => {
result[item.name].push(item);
});
console.log(result);
// 输出:
// {
// "Tom": [
// {"id": 1, "name": "Tom", "age": 20},
// {"id": 3, "name": "Tom", "age": 23}
// ],
// "Jack": [
// {"id": 2, "name": "Jack", "age": 22},
// {"id": 5, "name": "Jack", "age": 25}
// ],
// "Lucy": [
// {"id": 4, "name": "Lucy", "age": 21}
// ]
// }
```
在这个示例中,我们首先使用 Array.map() 方法将每个对象的 name 属性值提取出来,然后使用 Set 对象去重,得到一个包含所有不重复 name 值的数组。接着使用 forEach() 方法遍历不重复 name 值的数组,为每个 name 值创建一个键,并将该键对应的值设置为空数组。然后再次遍历原数组,将每个对象添加到对应 name 值的数组中。最终得到的新对象中,每个键对应的值都是一个数组,包含了所有具有相同 name 属性值的对象。
阅读全文