我有一个数组有一些值,但我不需要在我的数组中使用相同的值
示例:
var myarray=new Array();
myarray[0]="Apple",
myarray[1]="Grapes",
myarray[2]="Apple",
我希望我的阵列应该只包含葡萄和苹果。
答案 0 :(得分:2)
我在这里找到了一些方法。 来源: Removing duplicate element in an array
function eliminateDuplicates(arr) {
var i,
len=arr.length,
out=[],
obj={};
for (i=0;i<len;i++) {
obj[arr[i]]=0;
}
for (i in obj) {
out.push(i);
}
return out;
}
答案 1 :(得分:2)
此函数将从数组中删除重复值(它保留最后一个):
function removeDups(arr) {
var temp = {}, val;
for (var i = arr.length - 1; i >= 0; i--) {
val = arr[i];
if (temp[val] === true) {
// already have one of these so remove this one
arr.splice(i, 1);
} else {
temp[val] = true;
}
}
}
如果你想保留第一个而不是最后一个,你可以使用这个版本:
function removeDups(arr) {
var temp = {}, val;
for (var i = 0; i < arr.length; i++) {
val = arr[i];
if (temp[val] === true) {
// already have one of these so remove this one
arr.splice(i, 1);
// correct our for loop index to account for removing the current item
--i;
} else {
temp[val] = true;
}
}
}
答案 2 :(得分:0)
unique = myArray.filter(function(elem, pos) {
return myArray.indexOf(elem) == pos;
})
unique
只有唯一值。
注意:以上内容依赖于filter
,这是ECMAScript5的新版本,并不存在于旧版浏览器(包括IE8)中,但存在于所有现代浏览器中。如果您必须支持旧版浏览器,请使用ES5垫片(因为filter
是可填充的)。另请注意,{1}}可能不会出现在像IE7这样的旧浏览器中。