扁平化一个数组与对象

一、扁平化一个数组

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

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

时间: 2024-11-04 11:21:14

扁平化一个数组与对象的相关文章

将扁平化的数组还原成树

///将扁平化之后的数组还原成树 buildTree = (list) => { let dataArray = []; list.forEach(item=>{ if(item._parent_path ===''){ dataArray.push(item); } }); return this.data2treeDG(list, dataArray); }; data2treeDG(datas, dataArray){ dataArray.forEach(item=>{ let c

js 扁平化输出数组

1.使用数组的flat方法 [1,2,[3,[4,5]]].flat(Infinity) //[1, 2, 3, 4, 5] 2.实现方式二: var arr = [[1, 2, 23], [13, 4, 5, 5], [6, 7, 9, [11, 12, [12, 13, [14]]]], 10]; var result = []; function flatFn(arr,res=[]) { arr.forEach(item => { if (Array.isArray(item)) { fl

数组扁平化的五种方法

数组扁平化概念 数组扁平化是指将一个多维数组变为一维数组 [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5] 实现 1. reduce 参数 callback 执行数组中每个值 (如果没有提供 initialValue则第一个值除外)的函数,包含四个参数: accumulator累计器累计回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue(见于下方).currentValue数组中正在处理的元素.index 可选数组中正在处理的当前元

ES6数组和对象的扩展

es6数组的扩展 扩展运算符 扩展运算符是对具有Iterator 接口的对象,都可以使用扩展运算符 Array.from() 用于将两类对象转化为真正的数组 1.类似数组的对象(只要据有length属性, 都可以被转化为数组) 2.可遍历(iterable)的对象 Array.of() 将一组值转化为数组 find和findIndex find方法,用于找出第一个符合条件的数组成员,没有找到会返回undefiend,findIndex方法返回的是第一个符合条件成员的位置, 如果找不到返回-1,

已知如下数组: var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]; 编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组

已知如下数组: var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]; 编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组 var dt= arr.toString().split(",").sort(function(a,b){return a-b}).map(Number);Array.from(new Set(dt)) 代码如下 var d

数组的扁平化处理方法

在数组的操作中经常会遇到数组嵌套数组的情况,而我们常常需要的是单层数组. 也就是[1,2,[3,4,[5,[6,[7]]]]] ===>[ 1, 2, 3, 4, 5, 6, 7 ] ,我们称之为数组的扁平化处理. 方法一 如果是纯数字的数组(试了一下字符串的也可以)可以利用简单的toString和split方法 var arr = [1,'a',[3,'4',['b',[6,[7]]]]] console.log(arr.toString().split(',')) //[ '1', 'a',

数组扁平化的几种处理放法

清明节,这几天放假闲来无事,好好研究一下基础知识,今天看看数组扁平化该怎么处理: 先来看数组扁平化是什么: var arr = [1,2,3,4,[5,6,[7,8]],true] => [1,2,3,4,5,6,7,8,true] 就是把二维或者多维数组,转成一维数组. 1.我想大部分同学会和一样,首先想到的肯定是遍历数组,如果某一项是基本数据类型,直接push到新数组,如果某一项是数组,则直接将这一项concat到新的数组上,当然如果是多维数组,还得用上递归的方法,继续往下层寻找,上代码:

FCC 中级算法题 数组扁平化

Steamroller 对嵌套的数组进行扁平化处理.你必须考虑到不同层级的嵌套. Array.isArray() 思路: (1)遍历arr,如果arr[i]是数组,就重新调用本函数继续循环,然后和新数组连接; (2)如果不是数组,就直接添加进新数组: 知识点: (1)Array.concat()方法用于合并两个或多个数组.此方法不会更改现有数组,而是返回一个新数组; (2)Array.push()方法将一个或多个元素添加到数组的末尾,并返回数组的新长度; (3)Array.isArray()用于

javascript数组扁平化处理

最近看jQuery源码$.map方法的实现,返回值利用了一个扁平化处理 return ret.concat.apply( [], ret ) 这有个疑问,不知道为什么不直接返回ret 根据这个返回值处理,推测ret可能不是一阶数组,例如[1,2,[3,4]]这样的; var ret = [1,2,[3,4]] 所以进行了这样的处理