我在这里搜索过但还没有找到解决方案。如果我错了,显然我会得到纠正。我想要做的是返回数组中没有重复项的值。
示例:
myArr = [2,1,2,3] // answer [1,3]
myArr = [3,1,2,2,3] // answer [1]
我会发布一些代码,但我自己无法解决这个问题,我发现的唯一代码示例是删除任何重复的值。
上面可能的解决方案是不返回重复项...我正在尝试返回不重复的值。
答案 0 :(得分:4)
一种选择是使用optional second argument to indexOf查找重复索引。考虑对于给定元素e
和索引i
:
e
是数组中两个相同元素中的第一个,indexOf(e)
将返回i
,indexOf(e, i + 1)
将返回第二个元素的索引。e
是数组中两个相同元素中的第二个,indexOf(e)
将返回第一个元素的索引,indexOf(e, i + 1)
将返回-1
e
是唯一元素,indexOf(e)
将返回i
而indexOf(e, i + 1)
将返回-1
。因此:
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];