在JavaScript中展平数组 - 需要说明

时间:2015-09-22 17:23:13

标签: javascript arrays

我正在阅读一本名为 Eloquent JavaScript 的书。在其中进行了一项练习,需要一个平坦的异构阵列和放大器。经过这么长时间没有得到答案后,我在网上找到了解决方案&无法理解代码。我希望有人会善意地解释,特别是对于争论而言#34; flat"以及它应该如何运作。代码在

之下
var arrays = [[1, 2, 3], [4, 5], [6]];

console.log(arrays.reduce(function(flat, current) {
    return flat.concat(current);
}, []));

2 个答案:

答案 0 :(得分:0)

我已经实现了这个解决方案,这似乎也适用于嵌套数组。

function flattenArray(arr){

  for(var i=0;i<arr.length;i++){

    if(arr[i] instanceof Array){

      Array.prototype.splice.apply(arr,[i,1].concat(arr[i]))
    }

  }

  return arr;
}

答案 1 :(得分:0)

这是我随ES6格式一起提供的解决方案:

const reduced = arrays.reduce((result,array) => result.concat(array),[]);

console.log(reduced);