扁平化一个数组与对象

Posted alongup

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扁平化一个数组与对象相关的知识,希望对你有一定的参考价值。

一、扁平化一个数组

  前几天遇到的一个问题了,有一个数组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)); 

 

以上是关于扁平化一个数组与对象的主要内容,如果未能解决你的问题,请参考以下文章

关于ES6的flat(扁平化数组)

JS中树形对象与数组之间的相互转换

扁平化数组对象

带有 ORDER BY 的雪花 JSON 扁平化

js之数组操作

为什么我不能在此片段中生成唯一对象数组?