首页 > 代码库 > 数组去重的几种方式
数组去重的几种方式
一、利用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; } }
数组去重的几种方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。