复杂数组的展开

var a = [1,2,[{a:2},3,4,[5,6,{b:2}]]];
将这样一个数组展开成为一个一维的数组,要求是不能创建新的数组,在原数组本身修改

for (var i=0;i<a.length;i++){

    if(Array.isArray(a[i])){

        a.splice(i,1)[0].map(function (item,index) {

            a.splice(i+index,0,item);

        })

    }

}

写了一个实现,但是我记得之前并不是这么解决的,但是想不起来了,求一个更好的方案

小怪兽爱吃肉
浏览 526回答 1
1回答

子衿沉夜

function flat(arr) {&nbsp; &nbsp; return arr.reduce(&nbsp; &nbsp; &nbsp; &nbsp; function(acc, val) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return acc.concat(Array.isArray(val)? flat(val): val)&nbsp; &nbsp; &nbsp; &nbsp; }, []);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript