JS数组扁平化,去重,排序操作实例详解

  

本文实例讲述了JS数组扁平化,去重,排序操作。分享给大家供大家参考,具体如下:

  

在网上看到一个校招题目,已知一个数组var arr=[(1、3、2、1)[5, 3、4、8、5、6, 5],[6 2 8 9[4、11、15、8、9日,12日,[[10]12日,13日,14]]],16],用js编写一个程序将这个数组扁平化,并得到一个升序且无重复值的数组。得到最终结果为:[1,2,3,4,5,6,8,9,10,11,12、13、14、15、16)。下面对数组扁平化,去重和排序就行总结。

  <人力资源/>   

  var arr=[(1、3、2、1)   (5、3、4、8、5、6,5],   [6 2 8 9[4、11、15、8、9日,12日,[[10]12日,13日,14]]],   16]      

1,扁平化方法一(toString)

  

注意:如果arr数组中有空数组,不使用此方法,用下面的方法;同时得到数组的值是字符串,不是数字

        var newArr=arr.toString () .split (" ")      

2,扁平化方法二(正则表达式)

        var newArr1=JSON。解析(“[”+ JSON.stringify (arr) .replace (/(\ [\] \) | (\ [\]] */g, " ") + "]”);      

3,扁平化方法三(减少)

  

reduce()方法对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值,减少详细介绍

        函数平(arr) {   加勒比海盗。减少((a, b)=比;[].concat (Array.isArray (a),,& # 63;平(a): a、Array.isArray (b),,b & # 63;平(b): b), [])   }   var newArr2=平(arr)      

4,扁平化方法四(遍历数组)

        var newArr3=[]   函数平面(arr) {   (var=0;我& lt;arr.length;我+ +){   如果(arr[我]instanceof数组){   平(arr[我])   其他}{   newArr3.push (arr[我])   }   }   }   平(arr)      

  var newArr1=(1、3、2、1、5、3、4、8、5、6日,5日,6日,2,8,9,4日,11日,15日,8日,9日,12日,12日,13日,14日,16]      

1,去重方法一(套)

  

Array.from方法用于将两类对象转为真正的数组:类似数组的对象(数组类对象)和可遍历(iterable)的对象(包括ES6新增的数据结构组和地图)。
  & # 8195;& # 8195;ES6提供了新的数据结构集。它类似于数组,但是成员的值都是唯一的,没有重复的值,设置详细介绍

        var复制=Array.from(新(newArr1))      

2,去重方法二(减少)

  

通过数组减少方法,利用indexOf判断上一次回调返回数组一个中是否包含当前元素b的索引,如果不存在,则把b元素加入数的组,否则直接返回。

        var duplicate1=newArr1。减少((a, b)=比;{   如果(a.indexOf (b)===1) {   a.push (b)   }   返回一个   },[])      

3,去重方法三(数组下标去重法)

  

通过数组的过滤过滤方法,利用indexOf获取当前元素避署在被过滤数组farr中的第一个索引值,如果值与当前索引值指数相等则返回,如果不相等则过滤。

        var duplicate2=newArr1。过滤器((避署、索引farr)=比;{   返回farr.indexOf(避署)===指数   })      

4,去重方法四(遍历数组)

  

遍历数组,建立新duplicate3数组,利用indexOf判断元素是否存在于duplicate3新数组中,不存在则推到duplicate3新数组。

        var duplicate3=[]   (var=0;我& lt;newArr1.length;我+ +){   如果(duplicate3.indexOf (newArr1[我])===1){   duplicate3.push (newArr1[我])   }   }      

5,去重方法五(排序后相邻去重法)

  

给传入数组排序,排序后相同值相邻,然后遍历时新数组只加入不与前一值重复的值。

        函数unique3 (arr) {   arr.sort ();   var newArr=(arr [0]);   (var i=1, len=arr.length;我& lt;兰;我+ +){   如果(arr[我]!==newArr [newArr。长度- 1)){   newArr.push (arr[我]);   }   }   返回newArr;   }   var duplicate4=unique3 (newArr1)      

  var复制=(1、3、2、5、4、8、6、9、11、15日,12日,13日,10日,14日,16]      

1,排序方法一:(这种方法)

        函数systemSort (arr) {   加勒比海盗。排序(函数(a, b) {   返回一个- b   })   }   var=systemSort排序(复制)

JS数组扁平化,去重,排序操作实例详解