专栏名称: 程序员大咖
为程序员提供最优质的博文、最精彩的讨论、最实用的开发资源;提供最新最全的编程学习资料:PHP、Objective-C、Java、Swift、C/C++函数库、.NET Framework类库、J2SE API等等。并不定期奉送各种福利。
目录
相关文章推荐
51好读  ›  专栏  ›  程序员大咖

JavaScript数组去重

程序员大咖  · 公众号  · 程序员  · 2017-04-26 19:19

正文

请到「今天看啥」查看全文


], {hello: 'world' }]       const result = unique(src)       t.is(result.length, 7 )   })

简单去重的几种方法


暂时先只看数组中存number的去重方法:


最粗暴的是这种,利用Set不能有重复数据的特性做

const unique = arr => Array.from(new Set(arr))

正常思路如下,维护一个暂存数组,将数据存进去

function unique(arr) {       let temp = []       for (let i = 0; i if (temp.indexOf(arr[i]) === -1) {               temp.push(arr[i])           }       }       return temp   }

reduce做去重(下面有参考链接),意思是每次往前一个数组中塞数据,其实就是上面正常思路的去中间变量版

function unique(arr) {          let temp = []          for (let i = 0; i if (temp.indexOf(arr[i]) === -1) {                  temp.push(arr[i])              }          }          return temp      }function uniqueByReduce(arr) {       return arr.reduce((prev, next) => {           if (prev.indexOf(next) === -1) {               prev.push(next)           }           return prev       }, [])   }

这个时候基本int型数据都没什么问题了。


但是我上面测试用例中最后一个用例明显是无法通过的。那么就需要更多的判断


更复杂的去重


先贴代码:

function unique(arr) {       let temp = []       for (let i = 0; i if (typeof arr[i] === 'object' && (! Array.isArray(arr[i]))) {               if






请到「今天看啥」查看全文