文章目录
1. 递归和concat实现
let arr = [1, [2, [3, [4, [5, [6, [7, [8, [9]]]]]]]]]
function flat(arr) {
let result = []
for (let i = 0; i < arr.length; i++) {
result = result.concat(Array.isArray(arr[i]) ? flat(arr[i]) : arr[i])
}
return result
}
console.log(flat(arr));
2. reduce和concat实现
function flat(arr) {
return arr.reduce(function (prev, next) {
return prev.concat(Array.isArray(next) ? flat(next) : next)
}, [])
}
console.log(flat(arr));
3. some和concat和扩展运算符实现
function flat(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
console.log(flat(arr));
4. split和toString实现
function flat(arr) {
return arr.toString().split(",")
}
console.log(flat(arr));
5. flat实现
function flat(arr) {
return arr.flat(Infinity)
}
console.log(flat(arr));
6. 正则和JSON实现
function flat(arr) {
let str = JSON.stringify(arr);
str = str.replace(/(\[|\])/g, '');
str = '[' + str + ']';
return JSON.parse(str);
}
console.log(flat(arr));
7. 只使用递归实现
let result = []
function flat(arr) {
for (let i = 0; i < arr.length; i++) {
Array.isArray(arr[i]) ? flat(arr[i]) : result.push(arr[i])
}
}
flat(arr)
console.log(result);