js数组去重

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Js数组去重

对于前端来说,数组去重是个很常见的问题,下面介绍几种数组去重的方式

1、遍历数组的所有元素,然后让它与其后所有的数组元素进行比较,如果相等则删除重复的元素,并重新与被删除元素所在索引的元素接着进行比较例如:

var arr = [1,5,2,3,1,1,6]

for(var i=0; i

for(var j=i+1; j

if(arr[i] == arr[j]){

arr.splice(j,1);

j--;

}

}

}

console.log(arr)

j--;

2、将数组排序之后相邻的两个元素两两比较,如果后一个元素与前面的元素相等则删除后边的元素,并让前一个元素与其后的元素重新比较

var arr = [1,5,2,3,1,1,6]

arr.sort();

for(var i = 0; i < arr.length-1;i++){

if(arr[i]==arr[i+1]){

arr.splice(i,1);

i--;

}

}

console.log(arr)

此处 i--原理与方法一相同,为了保证当查出重复元素时,要让当前元素与其后填充来的元素再次比较

3、创建一个新数组,然后遍历要去重数组的所有元素并依次向新数组添加,如果要添加的元素在新数组当中不存在则将其push进去,如果已存在则跳过本次遍历,进行下一次遍历

var arr = [1,5,2,3,1,1,6]

var arr2 = [];

for(var i = 0; i < arr.length; i++){

if(arr2.indexOf(arr[i]) == -1){

arr2.push(arr[i]);

}

}

console.log(arr2)

此方法还可以用另外一种条件判断是否向新数组中push,不是判断是否存在于新数组,改为判断当前元素的索引与当前元素第一次出现的索引是否相等,如果相等则说明是第一次出现,就将其push新数组,如果不相等则说明不是第一出现,不需要做push操作

var arr = [1,5,2,3,1,1,6]

var arr2 = [];

for(var i = 0; i < arr.length; i++){

if(arr.indexOf(arr[i]) == i){

arr2.push(arr[i]);

}

}

console.log(arr2)

4、利用对象的思想如果对象里没有这个属性的话就会返回undefined

创建一个空对象和空数组,遍历要去冲的数组的元素,判断对象中以数组元素为属性名时是否为undefined,如果是则给它设置一个值假设为1,并将改元素push进新数组中,如果不为undefined则不作任何操作

var arr = [1,5,2,3,1,1,6]

var obj= {};

var arr2 = [];

for(var i = 0; i < arr.length; i++) {

if(obj[arr[i]] == undefined) {

arr2.push(arr[i]);

obj[arr[i]] = 1;

}

}

console.log(arr2)

以上是一些常用的数组去重方法,

相关文档
最新文档