码迷,mamicode.com
首页 > 编程语言 > 详细

扁平化一个数组与对象

时间:2018-03-20 10:31:56      阅读:1317      评论:0      收藏:0      [点我收藏+]

标签:数组元素   --   turn   dep   遇到   each   nbsp   用法   push   

一、扁平化一个数组

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

 

扁平化一个数组与对象

标签:数组元素   --   turn   dep   遇到   each   nbsp   用法   push   

原文地址:https://www.cnblogs.com/alongup/p/8607499.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!