最全的数组去重方法对比
2016-07-02 18:26
411 查看
常规方法两种
let unique1 = arr => { var res = [], json = {}; arr.forEach(function(value, arr) { if(!json[value]) { res.push(value); json[value] = 1; } }) return res; } let unique2 = arr => { //数组深拷贝,为不了影响原来的数组 let arr1 = arr.concat(); arr1.sort(); for (var i = 1; i < arr1.length; i++ ) { if ( arr1[i] === arr1[ i - 1 ] ) { // use == if '2' eq 2, else === arr1.splice( i--, 1 ); } return arr1; }
使用ES5的indexOf方法两种
let unique3 = arr => { arr.forEach(function(value) { res.indexOf(value) < 0 ? this.push(value) : ''; }, res = []) } let unique4 = arr => { let res = []; arr.forEach(function(value) { (res.indexOf(item) == -1) && res.push(item); }) return res; } let arr = [1, 1, 2, 2]; unique3(arr); console.log(res);
简洁优雅版
let unique5 = arr => { return arr.filter(function (value, index, array) { return index <= array.indexOf(value);}); };
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- jQuery plugin items filter
- javascript实现10进制转为N进制数
- 使用 Python 处理 JSON 格式的数据
- 最后一次说说闭包
- Ajax
- XML 与 JSON 优劣对比
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法