数组的扁平化处理
1.使用flat()
const arr = [1, [2, [3, [4, 5]]], 6];
const arr1 = arr.flat(Infinity);
console.log(arr1);
2.使用正则表达式
const arr = [1, [2, [3, [4, 5]]], 6];
const arr2 = JSON.stringify(arr).replace(/\[|\]/g, '').split(',');
console.log(arr2);
3.使用正则表达式改良版
const arr = [1, [2, [3, [4, 5]]], 6];
const arr3 = JSON.parse('[' + JSON.stringify(arr).replace(/\[|\]/g, '') + ']');
console.log(arr3);
4.使用reduce
const arr = [1, [2, [3, [4, 5]]], 6];
const flatten = arr => {
return arr.reduce(
(pre, cur) => {
return pre.concat(Array.isArray(cur) ? flatten(cur) : cur);
}, []
)
}
const arr4 = flatten(arr);
console.log(arr4);
5.函数递归
const arr = [1, [2, [3, [4, 5]]], 6];
const arr5 = [];
const fn = arr => {
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
fn(arr[i])
} else {
arr5.push(arr[i])
}
}
}
fn(arr);
console.log(arr5);