从数组中删除匹配值

时间:2013-01-28 06:27:47

标签: javascript

我有一个数组有一些值,但我不需要在我的数组中使用相同的值

示例:

var myarray=new Array();
myarray[0]="Apple",
myarray[1]="Grapes",
myarray[2]="Apple",

我希望我的阵列应该只包含葡萄和苹果。

3 个答案:

答案 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这样的旧浏览器中。