问题描述:
数组是可多层嵌套,给定一个数组默认展开层数为1 ,数组按照输入层数展开,需要将改方法变为数组的原型方法,实现的demo如下
var arr1 = [1,[2,3]];
console.log(arr1.flatarr())//[1,2,3]
var arr2 = [1,[2,3,[4]]];
console.log(arr2.flatarr())//[1,2,3,[4]]
var arr3 = [1,[2,3,[4]]];
console.log(arr3.flatarr(2))//[1,2,3,4]
var arr4 = [1, ,[3,4]];
console.log(arr4.flatarr())//[1,3,4]
问题解决
在网上看到了很多的展平为一维的方法,但是阿里的这个确实是第一次遇到,所以我修改了其中的一个用递归的方式去解决了改问题,代码如下:
Array.prototype.flatarr=function (depth){
var result = [];
if(depth==undefined){
depth=1;
}
for(let i=0;i<this.length;i++){
// console.log(this[i])
if(Array.isArray(this[i])&&depth!=0){
result = result.concat(this[i].flatarr(depth-1));
}else if(this[i]==undefined){
continue;
}else{
result.push(this[i])
}
}
return result;
}
参考:https://blog.csdn.net/original_heart/article/details/78906911