let arr = [1,2,3,[4,5,6,[7,8,9,1]]]
1.es6
arr.flat(Infinity)
2.数组转成字符串再转数组
let newArr = arr.toString().split(',');
3.正则替换
arr = JSON.stringify(arr).replace(/(\[|\])/g,'').split(',')
4.用while判断数组中是否包含数组
while(arr.some(item=>return Array.isArray(item))){
arr = [].concat(...arr)
}
5.循环判断数组里面是否包含数组再做递归:
function myFlat(){
let arr = this;
let result = []
fn = (arr)=>{
for(let i = 0 ; i<arr.length ;i++){
if(Array.isArray(arr[i])){
fn(arr[i])
}else{
result.push(arr[i])
}
}
return result;
}
return fn(arr);
}
Array.prototype.myFlat = myFlat
let newarr = arr.myFlat();
网友评论