博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js数组扁平化
阅读量:7108 次
发布时间:2019-06-28

本文共 908 字,大约阅读时间需要 3 分钟。

看到一个有趣的题目:

var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];一个多维数组,要求扁平化,去重且升序,你会怎么做?

我们先从第一步来吧, 实现扁平化:

方法一:像这种多维数组, 需要循环判断, 因此用while, 不用if(if是一次判断)flatten = (arr) => {  while(arr.some(item => Array.isArray(item))){    arr =  [].concat.apply([],arr);  }  return arr;}flatten(arr) // [1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10]方法二:比较hack的方式, 只适用于纯数字arr.toString().split(',').map(itm=> parseInt(itm))//  [1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10] 最佳实践方法三:   lodash 的 ,  方法。当然, 如果是简单的二维, 那我们用es6扩展运算符或concat就可以搞定,比如:var arr = [1, [2, 3]];[].concat.apply([],arr); // [1, 2, 3] 或[].concat(...arr)    // [1, 2, 3]

第二部, 去重且升序:

这步相对于第一步来说应该很简单了,一维数组去重方式好多,

sortnum = (a, b) => {  return a - b}var arr1 = [1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10]new Set(arr1.sort(sortnum))   // 先排序再去重

 

转载于:https://www.cnblogs.com/aloehui/p/10455716.html

你可能感兴趣的文章