将一个多维数组转为一维数组
[1,2,[3,4,[5]]] ----> [1,2,3,4,5]
1、reduce
function flatten(arr) {
return arr.reduce((acc, cur) => {
return acc.concat(Array.isArray(cur) ? flatten(cur) : cur)
}, [])
}
2、join && split
function flatten(arr) {
return arr.join(',').split(',').map(item => {
return parseInt(item)
})
}
3、toString && split
function flatten(arr) {
return arr.toString().split(',').map(item => {
return parseInt(item)
})
}
4、递归
function flatten(arr) {
let res = [];
arr.map(item => {
if (Array.isArray(item)) {
res = res.concat(flatten(item));
} else {
res.push(item);
}
})
return res;
}
5、扩展运算符
[].concat(...arr); // [1,2,3,4,5]
function flatten(arr) {
while(arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr)
}
}
6、flat
[1,2,[3,4,[5]]].flat(3); // [1,2,3,4,5]