数组去重的几种方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组去重的几种方式相关的知识,希望对你有一定的参考价值。
一、利用indexOf查找,ie9以下不兼容
function noRepeat(ary) {
if (ary instanceof Array) {
var newAry = [];
for (var i = 0; i < ary.length; i++) {
var cur = ary[i];
if (newAry.indexOf(cur) === -1) {//indexOf IE9以下不兼容
newAry.push(cur)
}
}
return newAry;
}
}
二、利用对象属性名不能重复的方法。(不适合引号包裹的数字)
1.用了声明了一个新的数组和一个新的对象。
function noRepeat(ary){
if(ary instanceof Array){
var newAry = [];
var obj ={};
// 不适合区分数组项是字符型的数字,例如:5与‘5‘,
for(var i = 0; i < ary.length; i++ ){
var cur = ary[i];
obj[cur] = cur;
}
//把对象的属性名放到新数组中
for(var key in obj){
newAry.push(obj[key]);
}
return newAry;
}
}
2.for in
function noRepeat(ary) {
if (ary instanceof Array) {
var obj = {};
for (var i = 0; i < ary.length; i++) {
var cur = ary[i];
obj[cur] = cur;/
}
//再用一个数组存储下
var ary2 = [];
for (var key in obj) {
ary2.push(obj[key])
}
return ary2;
}
}
3.只声明一个对象方式,利用splice删除重复项
function noRepeat(ary){ if(ary instanceof Array){ var obj = {}; for(var i = 0; i < ary.length; ){ var cur = ary[i]; if(obj[cur] == cur){ ary.splice(i,1); //删除重复项后,i值不变但数组塌陷自定取到后面的一项。i<ary.length是动态计算的不会出错。 }else{ obj[cur] = cur; i++; } } return ary; } }
以上是关于数组去重的几种方式的主要内容,如果未能解决你的问题,请参考以下文章