1.es6语法Array.prototype.flat()
var arr1 = [1, 2, [3, 4]]; arr1.flat(); // [1, 2, 3, 4] var arr2 = [1, 2, [3, [4]]]; arr2.flat(); // [1, 2, 3, [4]] 默认展开深度为1 var arr3 = [1, 2, [3, [4]]]; arr3.flat(2); // [1, 2, 3, 4] // Infinity展开所有子数组 arr3.flat(Infinity); // [1, 2, 3, 4] // flat()方法会去掉数组中的空元素,值为undefined和null时也会被保留 var arr4 = [1, 2, , 3, 4] arr4.flat(); // [1, 2, 3, 4] var arr5 = [1, 2, [undefined, null]] arr5.flat(); // [1, 2, undefined, null]2.concat递归合并
var arr1 = [1, 2, [3, 4, [5]]]; function flatArray(arr) { return [].concat(...arr.map(x => Array.isArray(x) ? flatArray(x) : x) ) } var arr2 = flatArray(arr1); // [1, 2, 3, 4, 5]
