飞雪连天射白鹿,笑书神侠倚碧鸳

0%

js数组拍平 扁平化的方式

六种方式 拍平数组 扁平化数组

var arr = [1,2,[3,4,5,[6,7,8],9],10,[11,12]];

递归实现

1
2
3
4
5
6
7
8
9
10
11
function fn(arr){
  let arr1 = [];
arr.forEach((val)=>{
if(val instanceof Array){
arr1 = arr1.concat(fn(val))
}else{
arr1.push(val)
}
})
return arr1
}

reduce实现

1
2
3
4
5
function fn(arr){
return arr.reduce((prev,cur)=>{
return prev.concat(Array.isArray(cur)?fn(cur):cur)
},[])
}

flat

1
arr.flat(Infinity)

扩展运算符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function fn(arr){
let arr1 = [];
let bStop = true;
arr.forEach((val)=>{
if(Array.isArray(val)){
arr1.push(...val);
bStop = false
}else{
arr1.push(val)
}
})
if(bStop){
return arr1;
}
return fn(arr1)
}

toString

1
2
3
4
let arr1 = arr.toString().split(',').map((val)=>{
return parseInt(val)
})
console.log(arr1)

apply

1
2
3
4
5
6
function flatten(arr){
while(arr.some(item => Array.isArray(item))){
arr = [].concat.apply([],arr);
}
return arr;
}
听说,打赏我的人最后都找到了真爱
↘ 此处应有打赏 ↙
// 用户脚本