题目
将数组 arr = [ 1, [2, 3, 4], 5, [6, [7, [8], 9]], [10, 11], 12 ]
转换成 arr = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
代码实现
const arr = [1, [2, 3, 4], 5, [6, [7, [8], 9]],[10, 11], 12]
function flatten(arr) {
while (arr.some((item) => item instanceof Array)) {
arr = [].concat(...arr)
}
console.log(arr);
}
思路
当每次发现 arr 中还存在数组时,就把数组每一项展开然后用一个空数组把每一项合并到一起
- 第一次打印结果: [ 1, 2, 3, 4, 5, 6, [ 7, [ 8 ], 9 ], 10, 11, 12 ]
- 第二次打印结果: [ 1, 2, 3, 4, 5, 6, 7, [ 8 ], 9, 10, 11, 12 ]
- 第三次打印结果: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ]
concat 合并数组
const arr1 = [1, 2];
const arr2 = [3, 4];
const arr3 = [5, 6];
const mergedArray = arr1.concat(arr2, arr3);
console.log(mergedArray); // 输出: [1, 2, 3, 4, 5, 6]