JavaScript实现数组去重的常见方式
栏目: JavaScript · 发布时间: 5年前
内容简介:数组去重,一般在面试的时候经常会问到的或者一般是要求手写数组去重方法的代码不考虑兼容性的话,这种去重的方法代码是最少的,ECMAScript 6 入门indexOf()方法如果检索的结果没有匹配值,则返回 -1.
数组去重,一般在面试的时候经常会问到的或者一般是要求手写数组去重方法的代码
一、ES5中最常用的利用for嵌套for,然后splice去重
function unique(arr){ for(var i=0; i<arr.length; i++){ for(var j=i+1; j<arr.length; j++){ //第一个等同于第二个,splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组 if(arr[i]==arr[j]){ arr.splice(j,1); j--; } } } return arr; } var arr = [1,2,3,4,5,6,2,4,6,8]; console.log(unique(arr)) 复制代码
二、利用ES6 Set去重(Set是ES6的方法)
function unique (arr) { return Array.from(new Set(arr)) } var arr = [1,2,3,4,5,6,2,4,6,8]; console.log(unique(arr)) 复制代码
不考虑兼容性的话,这种去重的方法代码是最少的,ECMAScript 6 入门
三、利用indexOf去重
var arr = [1,3,4,5,6,7,4,3,2,4,5,6,7,3,2]; function unique(){ var newArr = []; for (var i = 0; i < arr.length; i++) { if (newArr.indexOf(arr[i]) == -1 ) { newArr.push(arr[i]); } } console.log(newArr); } unique(arr); 复制代码
indexOf()方法如果检索的结果没有匹配值,则返回 -1.
四、利用sort()
var arr = [1,3,4,5,6,7,4,3,2,4,5,6,7,3,2]; function unique2(arr){ arr.sort(); var newArr = [arr[0]], len = arr.length; for(var i = 1; i < len; i++){ if(arr[i] !== newArr[newArr.length - 1] ){ newArr.push(arr[i]); } } return newArr; } console.log( unique2(arr) ); 复制代码
五、利用对象的属性去重
每次取出原数组的元素,然后再对象中访问这个属性,如果存在就说明重复
function unique(arr){ var res =[]; var json = {}; for(var i=0;i<arr.length;i++){ if(!json[arr[i]]){ res.push(arr[i]); json[arr[i]] = 1; } } return res; } var arr = [1,3,4,5,6,7,4,3,2,4,5,6,7,3,2]; console.log(unique(arr)) 复制代码
六、利用数组原型对象上的includes方法
function unique(arr){ var res = []; for(var i=0; i<arr.length; i++){ if( !res.includes(arr[i]) ){ // 如果res新数组包含当前循环item res.push(arr[i]); } } return res; } console.log(unique([1,1,2,3,4,5,3,2,3,6,7,4])); 复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 数组常见的遍历循环方法、数组的循环遍历的效率对比
- ios基础 – 常见的数组使用介绍[原创]
- javascript数组常见的22种方法总结
- C语言指针数组和数组指针
- 数组 – 如何在Swift中将数组拆分成两半?
- 菜鸡的算法修炼:数组(旋转数组的最小数字)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。