如何在 JavaScript 中同时减少数组以及合并其一个字段
假设我们有一个以下对象数组 -
const arr = [{
id: 121,
hobby: 'cycling'
}, {
id: 125,
hobby: 'jogging'
}, {
id: 129,
hobby: 'reading'
}, {
id: 121,
hobby: 'writing'
}, {
id: 121,
hobby: 'playing football'
}, {
id: 125,
hobby: 'cooking'
}, {
id: 129,
hobby: 'horse riding'
}];假设我们必须编写一个函数,该函数接收这样的数组并根据公共的 id 属性合并该数组,并且我们为 hobby 属性分配一个数组,并将特定 ID 的所有爱好放入其中。
我们将使用 Array.prototype.reduce() 方法来遍历数组并同时合并具有相同索引的条目。
用于执行此操作的代码如下 -
示例
const arr = [{
id: 121,
hobby: 'cycling'
}, {
id: 125,
hobby: 'jogging'
}, {
id: 129,
hobby: 'reading'
}, {
id: 121,
hobby: 'writing'
}, {
id: 121,
hobby: 'playing football'
}, {
id: 125,
hobby: 'cooking'
}, {
id: 129,
hobby: 'horse riding'
}];
const mergeArray = (arr) => {
return arr.reduce((acc, val) => {
const ind = acc.findIndex(item => item.id === val.id);
if(ind !== -1){
acc[ind].hobby.push(val.hobby);
}else{
acc.push({
id: val.id,hobby: [val.hobby]
});
};
return acc;
}, []);
};
console.log(mergeArray(arr));输出
控制台中的输出将为 -
[
{ id: 121, hobby: [ 'cycling', 'writing', 'playing football' ] },
{ id: 125, hobby: [ 'jogging', 'cooking' ] },
{ id: 129, hobby: [ 'reading', 'horse riding' ] }
]
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP