有沒有一種方法可以將數組用作javascript Set中的值?使用數組值的Javascript集合
實施例:
s = new Set()
s.add([1,2])
s.has([1,2]) // -> false
s.add(1)
s.has(1) // -> true
據推測,因爲它看起來在引用,而不是陣列中的實際值與所述陣列的情況下,返回false。有沒有辦法做到這一點,使s.has([1,2])
返回true
?
有沒有一種方法可以將數組用作javascript Set中的值?使用數組值的Javascript集合
實施例:
s = new Set()
s.add([1,2])
s.has([1,2]) // -> false
s.add(1)
s.has(1) // -> true
據推測,因爲它看起來在引用,而不是陣列中的實際值與所述陣列的情況下,返回false。有沒有辦法做到這一點,使s.has([1,2])
返回true
?
您可以使用json作爲鍵。
s = new Set()
s.add(JSON.stringify([1,2]))
s.has(JSON.stringify([1,2])) // true
你必須要小心這裏,因爲Set.has參照比較對象(這裏數組),所以它應該是這樣的:
var a = [1,2]; var s = new Set([a]); s.has(a); // -> true
,將工作,但我會wrap用我自己的原型設置,不重複每次遍歷集合:
function compareByValue(pool, needle){
var search = [];
pool.forEach(function(value) {
search.push(value.toString());
});
return search.indexOf(needle.toString()) !== -1;
}
compareByValue(s, [1,2]); // -> true
沒錯,但我想按價值檢查。 –
這有效,但我只是稍等一下,看看在接受它之前是否有其他想法。更具體地說,我很好奇,是否有類似於python的'tuple'類,它是通過值而不是引用傳遞的。 –