js数组操作——对象数组根据某个相同的字段分组
可以使用JavaScript的map()方法和reduce()方法来实现将数组中包含的数组对象的某个字段整合为数组的操作。具体实现方法如下:
假设有以下数组对象arr:let arr = [{name: 'Tom', age: 18, hobbies: ['reading', 'swimming']},{name: 'Jerry', age: 20, hobbies: ['running', 'singing']},{name: 'Lucy', age: 22, hobbies: ['dancing', 'drawing']}
];
1.使用map()方法将每个对象的hobbies属性映射为一个新的数组:let hobbiesArr = arr.map(item => item.hobbies);
// 输出:[ [ 'reading', 'swimming' ], [ 'running', 'singing' ], [ 'dancing', 'drawing' ] ]
2.使用reduce()方法将多个数组合并为一个数组:let resultArr = hobbiesArr.reduce((prev, curr) => prev.concat(curr));
// 输出:[ 'reading', 'swimming', 'running', 'singing', 'dancing', 'drawing' ]
因此,可以将以上两个步骤合并为一步,实现将数组中包含的数组对象的某个字段整合为数组的操作:let resultArr = arr.map(item => item.hobbies).reduce((prev, curr) => prev.concat(curr));// 输出:[ 'reading', 'swimming', 'running', 'singing', 'dancing', 'drawing' ]
12