【问题标题】:JavaScript: Using Reduce Method to Merge Together Multiple Arrays Into One ArrayJavaScript:使用 Reduce 方法将多个数组合并为一个数组
【发布时间】:2019-06-08 21:51:45
【问题描述】:

我有以下代码:

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

我做错了什么?

【问题讨论】:

  • 您正在尝试将 + 运算符应用于数组,这是 javascript 不支持的。改用concat(a,e) => a.concat(e)

标签: javascript arrays function ecmascript-6


【解决方案1】:

您正在尝试使用 + 运算符组合数组。由于数组不支持+ 运算符,它们被强制转换为字符串。您可以使用数组扩展或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]));

【讨论】:

    【解决方案2】:

    不要使用+ 添加数组。请改用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; }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 2020-10-11
      • 1970-01-01
      • 2015-11-11
      • 2017-01-11
      • 2012-05-10
      相关资源
      最近更新 更多