数组扁平化
const a = [[1], [3, [4, 5, [6, 7]]], [8], [9, [2, 10]]]
方法1:递归
循环数组元素,如果还是一个数组,就递归调用该方法
function flatten1(arr){
let res = [];
for(var i=0;i<arr.length;i++){
if(Array.isArray(arr[i])){
res = res.concat(flatten1(arr[i]));
} else {
//注意concat 和push 方法的返回值不同
//res=res.concat(arr[i]);
res.push(ary[i])
}
}
return res;
}
方法2:
使用reduce来简化方法1的代码:
function flatten2(arr){
return arr.reduce((prev, cur) => prev.concat(Array.isArray(cur) ? flatten2(cur) : cur),[])
}
方法3:
toString方法转成字符串,split方法把字符串切割成数组,字符串拼接方法
function flatten3(arr){
return arr.toString().split(',').map(item=> +item)
}
方法4:
some则当其中一个返回true,则最终结果为true, 相当于逻辑运算符||。
function flatten4(arr){
while(arr.some(item => Array.isArray(item))){
arr = [].concat(...arr);
}
return arr;
}
方法5:
every方法表示当数组每个元素在判定函数中都返回true,则最终结果为true,相当于逻辑运算符 &&
function flatten5(arr) {
while (!arr.every(item => typeof item === 'number' && !isNaN(item))) {
arr = [].concat(...arr);
console.log(arr);
}
return arr;
}
console.log(...a)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。