Javascript 从数组中删除匹配值

Javascript 从数组中删除匹配值,javascript,Javascript,我有一个数组,其中有一些值,但我不需要在数组中使用相同的值 例如: var myarray=new Array(); myarray[0]="Apple", myarray[1]="Grapes", myarray[2]="Apple", 我希望我的数组只包含葡萄和苹果 unique = myArray.filter(function(elem, pos) { return myArray.indexOf(elem) == pos; }) unique将仅具有唯一值 注意:以上依赖于

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

例如:

var myarray=new Array();
myarray[0]="Apple",
myarray[1]="Grapes",
myarray[2]="Apple",
我希望我的数组只包含葡萄和苹果

unique = myArray.filter(function(elem, pos) {
    return myArray.indexOf(elem) == pos;
})
unique
将仅具有唯一值


注意:以上依赖于
过滤器
,它是ECMAScript 5的新版本,不存在于传统浏览器(包括IE8)中,但存在于所有现代浏览器中。如果您必须支持传统浏览器,请使用ES5垫片(因为
filter
可以使用垫片)。还要注意的是,
indexOf
在像IE7这样的老浏览器中可能不存在。

这里我找到了一些方法来源:

函数消除重复(arr){
var i,
len=arr.长度,
out=[],
obj={};

对于(i=0;i此函数将从数组中删除重复值(保留最后一个值):

如果要保留第一个而不是最后一个,可以使用以下版本:

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;
        }
    }
}
功能移除UPS(arr){
var temp={},val;
对于(变量i=0;i
它确实只包含苹果和葡萄-在您的示例中?不,我只知道示例值可能不同。@K.P:为什么您不引用一个实际符合问题陈述的示例?!好的,是您自己的问题吗是否要删除重复项或b)是否要删除特定值?请不要在非jQuery问题上发布jQuery特定的答案。我建议在您依赖ES5功能时始终警告OP(是的,即使在2013年也是如此)。我可以为您自由地这样做(尤其是因为SO bug不允许我在编辑后删除否决票)。
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;
        }
    }
}