JavaScript 展平数组

示例

2维数组

6

在ES6中,我们可以通过散布运算符将数组展平...:

function flattenES6(arr) {
  return [].concat(...arr);
}

var arrL1 = [1, 2, [3, 4]];
console.log(flattenES6(arrL1)); // [1、2、3、4]
5

在ES5中,我们可以通过实现该目标。apply():

function flatten(arr) {
  return [].concat.apply([], arr);
}

var arrL1 = [1, 2, [3, 4]];
console.log(flatten(arrL1)); // [1、2、3、4]

高维数组

给定一个像这样的深度嵌套数组

var deeplyNested = [4,[5,6,[7,8],9]];

可以用这种魔法压扁

console.log(String(deeplyNested).split(',').map(Number);
#=> [4,5,6,7,8,9]

要么

const flatten = deeplyNested.toString().split(',').map(Number)
console.log(flatten);
#=> [4,5,6,7,8,9]

以上两种方法仅在数组仅由数字组成时才起作用。使用此方法无法展平对象的多维数组。