一、扁平化一个数组
前几天遇到的一个问题了,有一个数组var str=[1,2,1,[4,5,[6,7,[8,9]]]];如何讲这个数组扁平化,去掉这些重复的中括号。我I也是想了很久才写了出来,在这里分享给大家。
1 var str=[1,2,1,[4,5,[6,7,[8,9]]]]; 2 function arr(str,depth){ //depth代表扁平化的次数 3 var newArr=[]; //创建一个新数组,用来添加原数组元素和结构后的数组 4 str.forEach(item=>{ 5 if(Array.isArray(item) && depth>0){ //Array.isArray();判断一个元素是不是数组,返回值为true或者false 6 newArr.push(...(arr(item,--depth))) //这里利用了es6的结构数组和递归 7 }else{ 8 newArr.push(item); 9 } 10 }) 11 return newArr; 12 } 13 console.log(arr(str,8))
扩展:...数组的用法
1 var arr=[1,5,4,2,10,8,8,20,15,14,12]; 2 function minarr(arr){ 3 return Math.min(...arr); //将数组解构 4 } 5 console.log(minarr(arr)) //1
二、扁平化一个对象的方法
我遇到这个问题的时候,利用了很多方法,写了很多的代码,查过资料发现了一个很简单的方法。
1 var obj={0:1,1:1,length:2};
2 console.log(Array.prototype.slice.call(obj));