JS数组去重
来源:互联网 发布:centos7网络配置 编辑:程序博客网 时间:2024/05/22 13:43
数组去重的方法多种多样,当然我们最求的是最简单,性能最高的方法,下面介绍6种能够想到的数组去重:
1.ES5 filter+indexOf
function replace(arr){ return arr.filter(function(item,index,self){ return self.indexOf(item) === index;})}
2.sort+splice
function replace(arr){ arr.sort(function(a,b){return a-b;}); for(var i = 0;i < arr.length; i++){ if(arr[i] == arr[i+1]){ arr.splice(i+1,1); i--; } } return arr;}
这个方法的思路是先把数组排序,然后比较相邻的两个值。 排序的时候用的JS原生的sort方法,JS引擎内部应该是用的快速排序吧。 最终测试的结果是此方法运行时间平均是第二种方法的三倍左右,不过比第一种和第三种方法快了不少。
3.filter+sort(效率最高)
function replace (arr) { return arr.concat().sort().filter(function (item, index, array) { return !index || item !== array[index - 1]; })}
4.ES6 set+Array.from(最简单,不过需要支持ES6)
function replace(arr){ return [...new Set(arr)]}//orfunction replace(arr){ return Array.from(new Set(arr))}
5.常规方法,创建新数组保存非重复元素
function replace(arr){ var nowa = []; for(var i = 0;i<arr.length;i++){ if(nowa.indexOf(arr[i]) == -1){ nowa.push(arr[i]); } } return nowa;}
6.创建一个对象,标识是否为重复元素
function replace(arr) { var newarr = []; var barr = {}; var l = arr.length; for (var i = 0; i < l; i++) { if (barr[arr[i]] == undefined) { barr[arr[i]] = 1; newarr[newarr.length] = arr[i]; } else if (barr[arr[1]] == 1) { continue; } } return newarr;}
阅读全文
0 0
- JS 数组去重
- js数组去重
- js 数组去重
- js 数组去重
- js数组去重
- js 数组去重
- js数组去重
- JS 数组去重
- //js数组去重
- js-数组去重
- js数组去重
- js 数组去重
- js数组去重
- JS 数组去重
- JS 数组去重
- js数组去重
- JS 数组去重
- js数组去重
- 网易2018校招内推编程题(Python描述)
- 【表空间查询】
- CXF调用webservice 客户端 带soap header认证
- 性能测试过程中,经常使用到的Oracle中用到的sql语句
- 强化练习9:将不定长的字符串转化为一个16位的字符数组
- JS数组去重
- Qt编写的软件在线升级系统(客户端)
- 001 Python前端之HTML基础
- 使用Cython来保护Python代码库
- 过滤器与拦截器的区别
- 单链表解析Ⅲ
- HDU 2546 饭卡
- 加入信号量的简易卖票系统
- Counting Divisors HDU