为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript:使用 Reduce 方法将多个数组合并为一个数组

JavaScript:使用 Reduce 方法将多个数组合并为一个数组

慕尼黑8549860 2021-06-18 17:54:22
我有以下代码:const intersection = (arr) => {  //console.log(arr)  return arr.reduce((a,e) => a+e, [])}const arr1 = [5, 10, 15, 20];const arr2 = [15, 88, 1, 5, 7];const arr3 = [1, 10, 15, 5, 20];console.log(intersection([arr1, arr2, arr3]));我期待我的代码打印,[5,10,15,2015,88,1,5,71,10,15,5,20]但它正在打印5,10,15,2015,88,1,5,71,10,15,5,20我究竟做错了什么?
查看完整描述

2 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

您正在尝试将数组与+运算符组合在一起。由于数组不支持+运算符,因此它们被强制转换为字符串。您可以使用数组展开或Array.concat()使用Array.reduce()以下方法组合它们:


const intersection = arr => arr.reduce((a, e) => [...a, ...e], [])


const arr1 = [5, 10, 15, 20];

const arr2 = [15, 88, 1, 5, 7];

const arr3 = [1, 10, 15, 5, 20];

console.log(intersection([arr1, arr2, arr3]));

或者你可以使用Array.flat():


const intersection = arr => arr.flat();


const arr1 = [5, 10, 15, 20];

const arr2 = [15, 88, 1, 5, 7];

const arr3 = [1, 10, 15, 5, 20];

console.log(intersection([arr1, arr2, arr3]));


查看完整回答
反对 回复 2021-06-24
?
UYOU

TA贡献1878条经验 获得超4个赞

不要+用于添加数组。使用concat来代替:


const intersection = arr => arr.reduce((a, e) => a.concat(e), []);


const arr1 = [5, 10, 15, 20];

const arr2 = [15, 88, 1, 5, 7];

const arr3 = [1, 10, 15, 5, 20];

console.log(intersection([arr1, arr2, arr3]));

.as-console-wrapper { max-height: 100% !important; top: auto; }


查看完整回答
反对 回复 2021-06-24
  • 2 回答
  • 0 关注
  • 1004 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信