数组去重?即去除数组中重复的元素...
首先第一种方法就是利用set集合的特性实现去重(其实set用法很多,有兴趣的可以多去了解下);
那什么是set集合呢?set集合是一种新的数据存储格式;
set语法:new Set()
参数:一个数组
set集合可以称为史上最快的一种去重方式,如下:
var arr = [1, 2, 3, 4, 5, 5, 4, 3, 2, 1 ];var set = new Set(arr); console.log(set)
第二种方法则是先封装好一个函数判断数组中是否存在某个值,然后再利用这个原理进行数组去重;代码如下:
//判断数组中是否存在某个值function has(arr, n){ var bStop = false; for(var i in arr){ if(arr[i] == n){ bStop = true; break; } } return bStop; }function norepeat2(arr){ var newArr = []; for(var i in arr){ if(!has(newArr, arr[i])){ newArr.push(srr[i]) } } return newArr; }
第三种方法呢,则是利用es5中新增的方法indexOf去重;
indexOf()作用:判断某个字符是否存在。如果存在,则返回相对应的下标,不存在则返回-1;
究竟怎么实现呢,相信小可爱们都已经想到了~代码如下:
function norepeat3(arr){ //创建好一个新的数组 var newArr = []; //循环遍历arr for(var i in arr){ //判断新数组,如果不存在arr的第i个,不存在则添加到新数组当中 if(newArr.indexOf(arr[i]) == -1){ newArr.push(arr[i]) } } return newArr }
第四种方法则利用sort排序,创建一个新的数组然后传入原数组的第0个;循环遍历的时候要注意i的初始值从1开始。代码如下:
Array.prototype.norepeart4 = function(){ //先排序 this.sort(); //创建一个新的数组并存入数组的第0个 var newArr = [this[0]]; //循环遍历传入的数组 for(var i = 1;i<this.length;i++){ //利用每个新数组中值与传入数组的第i个进行计较,不存在则push到新数组中 if(newArr[newArr.length-1] != this[i]){ newArr.push(this[i]) } } //返回新的数组 return newArr; }
只有想不到没有写不出!数组去重的方法很多很多,在这里就简单的列举四种。望大家喜欢(嘻嘻)