阅读 94

数组扁平化,去重,排序一套全搞定

数组扁平化

数组扁平化,就是把多维数组变成一维数组。

arr =  [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10] newArr = [1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10] 复制代码

比如将arr变成newArr就是数组扁平化 下面采用4种方法实现

1.使用数组的reduce()方法

reduce方法详解

function fn(arr){     return arr.reduce((result,item)=>{         return result.concat(Array.isArray(item)?fn(item):item)     },[]) } 复制代码

2.先转换成字符串,在通过字符串转换为数组完成

这里介绍两种方法

  1. 利用数组的toString()方法,再使用split()分割还原为数组

  2. 利用数组的join()方法,再使用split()分割还原为数组

toString方法详解
 join方法详解
 split方法详解

function fn(arr){   return arr.toString().split(',').map(item=>{     return Number(item)   }) } function fn(arr){   return arr.join().split(',').map(item=>{      return Number(item)   }) } 复制代码

3.普通递归实现

function fn(arr){     let result = []     for(let i = 0;i<arr.length;i++){         if(Array.isArray(arr[i])){             result =result.concat(fn(arr[i]))         }else{             result.push(arr[i])         }     }     return result } 复制代码

4.使用扩展运算符实现

判断arr是否为数组,如果是数组就使用罗站运算符扩展一次

function fn(arr){   while(arr.some(item=>Array.isArray(item))){      arr = [].concat(...arr)   }   return arr } 复制代码

总结

数组降维(扁平化)的核心思想就是:遍历数组arr,如果arr[i]是数组就递归遍历,直到arr[i]不为数组与之前的结构连接(concat)。


作者:小铃铛
链接:https://juejin.cn/post/7021763639522623495


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐