关于数组常用方法

2021-03-17 18:27

阅读:363

1、递归
function reduceDimension(arr){
let res = [];
let toArr = function(arr){
arr.forEach(function(item){
item instanceof Array ? toArr(item) : res.push(item);
})
}
toArra(arr);
return res
}
//调用此方法
let arr = [1,2,[3,4,[5,6]]]
let result = reduceDimension(arr);
console.log(result);//[1,2,3,4,5,6];

2、Array.prototype.flat()
let arr1 = [1,2,[3,4,[5,6]]];
let arr3 = arr1.flat(Infinity);//[1,2,3,4,5,6] Infinity 作为深度,展开任意深度的嵌套数组。

3、利用扩展运算符
let arr1 = [1,2,[3,4,[5,6]]];
function arrayDimensionReducion(arr,result = []){
while(arr.some(Array.isArray)){
arr = [].concat(...arr)
}
return arr
}
或者其他方法
let meta = [1,2,[3,4,[5]],6,[7,[8,9,[10,11,[12,13,[14,15]]]]]]
function dimensionReduc(arr,result=[]){
return arr.toString().split(‘,‘).map(x=>parseInt(x,10)) //这种方法可以哦,但是需要思考一个问题,如何确定parseInt(x,10)这个10值?

或者
for(let value of arr){
Array.isArray(value)? dimensionReduc(value,result):result.push(value)
}
return result;

或者
let res = arr.reduce((a,b)=>a.concat(b),[])
if(!res.filter(x=>Array.isArray(x)).length){
return res
}
return dimensionReduc(res)

或者
return [].concat(...arr.map(item=>Array.isArray(item)?demensionReduc(item):item))

或者
return arr.join().split(‘,‘).map(Number)
return arr.toString().split(‘,‘).map(Number)
}


评论


亲,登录后才可以留言!