【问题标题】:Remove Matching value from array [closed]从数组中删除匹配值[关闭]
【发布时间】:2013-01-28 06:27:46
【问题描述】:

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

例子:

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

我希望我的数组应该只包含葡萄和苹果。

【问题讨论】:

  • 它只包含苹果和葡萄——在你的例子中?
  • 不,我只是为示例值可能不同。
  • @K.P:你为什么不引用一个真正符合问题陈述的例子?!
  • 好的,您是 a) 想要删除重复项还是 b) 想要删除特定值?

标签: javascript


【解决方案1】:

在这里我找到了一些方法。 来源: 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;
}

【讨论】:

    【解决方案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;
            }
        }
    }
    

    【讨论】:

      【解决方案3】:
      unique = myArray.filter(function(elem, pos) {
          return myArray.indexOf(elem) == pos;
      })
      

      unique 将只有唯一值。

      注意:以上依赖于filter,它是 ECMAScript5 中的新功能,不存在于旧版浏览器(包括 IE8)中,但存在于所有现代浏览器中。如果您必须支持旧版浏览器,请使用 ES5 填充程序(因为 filter 可以填充)。另请注意,indexOf 可能不会出现在 IE7 等真正的旧浏览器中。

      【讨论】:

      • 请不要针对非 jQuery 问题发布 jQuery 特定的答案。
      • 我建议在您依赖 ES5 功能时始终警告 OP(是的,即使在 2013 年也是如此)。我冒昧地为你做这件事(尤其是因为一个 SO 错误不会让我在你编辑后删除反对票)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      相关资源
      最近更新 更多