js reduce数组合并
时间: 2023-11-04 22:58:28 浏览: 296
使用reduce()函数可以将多个数组合并成一个新数组。可以将要合并的数组放在一个数组中,然后使用reduce()函数对这个数组进行操作。在reduce()函数内部,使用concat()方法将当前元素与累加器进行合并,最后返回合并后的数组。
下面是一个示例代码:
```javascript
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let arr3 = [7, 8, 9];
let mergedArr = [arr1, arr2, arr3].reduce((acc, cur) => acc.concat(cur), []);
console.log(mergedArr); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
```
相关问题
reduce合并数组
下面是使用reduce()方法合并数组的示例代码:
```javascript
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const arr3 = [7, 8, 9];
const mergedArr = [arr1, arr2, arr3].reduce((acc, cur) => {
return acc.concat(cur);
}, []);
console.log(mergedArr); // 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9]
```
上述代码中,我们首先定义了三个数组arr1、arr2和arr3,然后将它们放在一个数组中。接着,我们使用reduce()方法将这个数组中的所有元素合并成一个新的数组mergedArr。在reduce()方法中,我们使用concat()方法将当前数组cur合并到累加器数组acc中,并将初始值设置为空数组[]。
js多层对象数组 合并_JS对象数组合并去重?
可以使用JavaScript的reduce()和concat()方法来合并多层对象数组。以下是一个示例代码,它将合并具有相同ID属性的对象,并将它们的数量相加:
```javascript
const arr1 = [{id: 1, name: 'A', count: 2}, {id: 2, name: 'B', count: 3}];
const arr2 = [{id: 1, name: 'A', count: 4}, {id: 3, name: 'C', count: 1}];
const mergedArr = [...arr1, ...arr2].reduce((acc, curr) => {
const index = acc.findIndex(item => item.id === curr.id);
if (index === -1) {
return [...acc, curr];
} else {
acc[index].count += curr.count;
return acc;
}
}, []);
console.log(mergedArr);
// Output: [{id: 1, name: 'A', count: 6}, {id: 2, name: 'B', count: 3}, {id: 3, name: 'C', count: 1}]
```
如果要合并多层对象数组,可以使用递归来处理每个子数组。以下是一个示例代码:
```javascript
const arr1 = [{id: 1, children: [{id: 2, name: 'A', count: 2}]}, {id: 3, name: 'B', count: 3}];
const arr2 = [{id: 1, children: [{id: 2, name: 'A', count: 4}]}, {id: 4, name: 'C', count: 1}];
function mergeArrays(arr1, arr2) {
const mergedArr = [...arr1, ...arr2].reduce((acc, curr) => {
const index = acc.findIndex(item => item.id === curr.id);
if (index === -1) {
return [...acc, curr];
} else if (curr.children) {
acc[index].children = mergeArrays(acc[index].children, curr.children);
return acc;
} else {
acc[index].count += curr.count;
return acc;
}
}, []);
return mergedArr;
}
const result = mergeArrays(arr1, arr2);
console.log(result);
// Output: [{id: 1, children: [{id: 2, name: 'A', count: 6}]}, {id: 3, name: 'B', count: 3}, {id: 4, name: 'C', count: 1}]
```
这个示例代码中,mergeArrays()函数使用递归来处理每个子数组,直到没有子数组为止。在每个子数组中,它再次使用reduce()方法来合并具有相同ID属性的对象。如果当前对象具有子数组,则递归处理该子数组。否则,它将增加当前对象的数量。最终,该函数将返回合并后的数组。
阅读全文