example
var arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14]]]], 10];
console.log(flatten(arr));
1. 不使用数组api递归+拓展运算符
function flatten(arr) => {
let resArr = [];
for (let i = 0; i < arr.length; i++) {
if (typeof arr[i] == "object") {
resArr = [...resArr, ...flatten(arr[i])];
} else {
resArr[resArr.length] = arr[i];
}
}
return resArr;
}
2. toString+split
function flatten(arr) {
return arr.toString().split(',').map(Number)
}
3. reduce+concat+递归
function flatten(arr) {
return arr.reduce((res, cur) => {
return res.concat(Array.isArray(cur) ? flatten(cur) : cur);
}, []);
}
4. some+concat
function flatten(arr) {
while (arr.some((item) => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
5. 正则+json
function flatten(arr) {
let str = JSON.stringify(arr);
str = str.replace(/(\[|\])/g, "");
str = "[" + str + "]";
return JSON.parse(str);
}
6. flat
console.log(arr.flat(Infinity))