数组扁平化有以下几种方式:
- 通过Array.prototype.flat(),将数组“拉平”
- 将数组转化成字符串,利用正则表达式实现
- 递归实现
- 利用 reduce 方法实现
完整代码
let arr = [1, [2, [3, [4, [5, 6]]]]];
// 直接利用 flat 实现扁平化
let fa = arr.flat(Infinity);
console.log(fa);
// 使用正则表达式实现扁平化
let str = JSON.stringify(arr);
let ary = str.replace(/([|])/g, '');
ary = '[' + ary + ']';
ary = JSON.parse(ary);
console.log(ary);
// 利用递归实现
function fn (arr, deepth = 1) {
if (deepth > 0) {
let result = [];
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
result.push(...fn(arr[i], deepth - 1));
} else {
result.push(arr[i]);
}
}
return result;
}
return arr;
}
console.log(fn(arr, 1));
// 利用reduce实现
function faltten (arr, deepth = 1) {
if (deepth > 0) {
return arr.reduce((pre, item) => pre.concat(Array.isArray(item) ? faltten(item, deepth - 1) : item), []);
}
return arr;
}
console.log(faltten(arr, Infinity));
上述关于数组扁平化的实现是自己学习的记录,更详细的实现方法大家可以看一下JavaScript实现flatten多种方法 - 掘金 (juejin.cn)