我已經在這裏搜索並沒有找到解決方案。如果我錯了,顯然我會糾正的。我想要做的是返回數組中沒有重複項的值。刪除在陣列中有重複的所有項目Javascript
例子:
myArr = [2,1,2,3] // answer [1,3]
myArr = [3,1,2,2,3] // answer [1]
我會張貼一些代碼,但我一直沒能算出這個我和唯一的代碼示例我發現對於去除任何重複值。
上面的可能的解決方案是不返回重複...我試圖返回沒有重複的值。
我已經在這裏搜索並沒有找到解決方案。如果我錯了,顯然我會糾正的。我想要做的是返回數組中沒有重複項的值。刪除在陣列中有重複的所有項目Javascript
例子:
myArr = [2,1,2,3] // answer [1,3]
myArr = [3,1,2,2,3] // answer [1]
我會張貼一些代碼,但我一直沒能算出這個我和唯一的代碼示例我發現對於去除任何重複值。
上面的可能的解決方案是不返回重複...我試圖返回沒有重複的值。
一個選項是使用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
});
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);
這不起作用。檢查回調參數。 – Bergi
用正確的回調參數更新了答案 –
如果不是關聯數組(您的情況下):
var myArr = [1,2,2,3,4,4,1,5];
var myNewArr = [];
if (myArr.length > 0)
{
myNewArr[0] = myArr[myArr.length-1];
}
var count = 1;
myArr.sort();
for (var i = myArr.length - 2; i >= 0; i--) {
if(myArr[i] != myArr[i-1])
{
myNewArr[count] = myArr[i];
count++;
}
}
變種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];
可能的重複:http://stackoverflow.com/questions/1960473/unique-values-in-an-array – 42shadow42
@ 42shadow42:這不是唯一的,雖然;請參閱示例 –
哦,我的錯誤,您希望所有副本的副本刪除不是所有,但一個感謝糾正我。 – 42shadow42