删除数组Javascript中具有重复项的所有项目

时间:2016-05-13 22:31:10

标签: javascript

我在这里搜索过但还没有找到解决方案。如果我错了,显然我会得到纠正。我想要做的是返回数组中没有重复项的值。

示例:

myArr = [2,1,2,3] // answer [1,3]

myArr = [3,1,2,2,3] // answer [1]

我会发布一些代码,但我自己无法解决这个问题,我发现的唯一代码示例是删除任何重复的值。

上面可能的解决方案是不返回重复项...我正在尝试返回不重复的值。

4 个答案:

答案 0 :(得分:4)

一种选择是使用optional second argument to indexOf查找重复索引。考虑对于给定元素e和索引i

  1. 如果e是数组中两个相同元素中的第一个,indexOf(e)将返回iindexOf(e, i + 1)将返回第二个元素的索引。
  2. 如果e是数组中两个相同元素中的第二个,indexOf(e)将返回第一个元素的索引,indexOf(e, i + 1)将返回-1
  3. 如果e是唯一元素,indexOf(e)将返回iindexOf(e, i + 1)将返回-1
  4. 因此:

    myArr.filter(function (e, i, a) {
      return a.indexOf(e) === i && a.indexOf(e, i + 1) === -1
    });
    

答案 1 :(得分:2)

var isUnique = function(v,i,arr){
   // return true if the first occurrence is the last occurrence 
   return ( arr.indexOf(v) === arr.lastIndexOf(v) ); 
};

var uniqueVals = myArr.filter(isUnique);

console.log( uniqueVals );

答案 2 :(得分:0)

如果不是关联数组(您的情况):

*

答案 3 :(得分:0)

var yourArray = [1,2,1,3];

        var uniqueValues = [];
        $.each(yourArray, function (i, value) { //taking each 'value' from yourArray[]
            if ($.inArray(value, uniqueValues) === -1) { 
                 uniqueValues.push(value); // Pushing the non - duplicate value into the uniqueValues[] 
            }
        });            
        console.log(uniqueValues);

结果:[1,2,3];