数组中将相同属性转为一个数组怎么做
时间: 2023-07-29 14:07:16 浏览: 88
可以使用 JavaScript 中的 reduce 方法来将相同属性转为一个数组。假设有如下数组:
```javascript
const arr = [
{ name: 'Alice', age: 20 },
{ name: 'Bob', age: 22 },
{ name: 'Charlie', age: 20 },
{ name: 'Dave', age: 22 }
];
```
现在想要将相同年龄的人放到同一个数组中,可以这样实现:
```javascript
const result = arr.reduce((acc, cur) => {
const index = acc.findIndex(item => item.age === cur.age);
if (index === -1) {
acc.push({ age: cur.age, names: [cur.name] });
} else {
acc[index].names.push(cur.name);
}
return acc;
}, []);
console.log(result);
// 输出:[
// { age: 20, names: ['Alice', 'Charlie'] },
// { age: 22, names: ['Bob', 'Dave'] }
// ]
```
上面的代码中,reduce 方法初始值为一个空数组 `[]`。在每次迭代的时候,先使用 findIndex 方法查找当前元素的年龄是否已经在结果数组中出现过。如果没有出现过,则将当前元素的年龄和名字放到一个新的对象中,再将该对象 push 到结果数组中。如果已经出现过,则将当前元素的名字 push 到对应的对象中的 names 属性中。最后返回结果数组即可。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)