具有对象/数组的Javascript Set / WeakSet数据结构

时间:2017-03-08 19:35:38

标签: javascript set

我使用随机生成器创建一对数字,需要弄清楚数字对是否早先发生过。我想过使用Set()但它似乎不起作用。

var a = [1, 2]
var s = new Set();
s.add(a) //Set {[1, 2]}
s.add([1, 2]) //Set {[1, 2], [1, 2]}

我怀疑这是因为JS存储引用而不是值。有没有办法只存储一次该数组/对,并根据值返回TRUE?

1 个答案:

答案 0 :(得分:0)

JavaScript检查与===的相等性。缺点是比较对象/数组/函数通常不那么简单。

如果格式一致,您可以使用一些丑陋的黑客:JSON.stringify()您的数组,并将字符串添加到Set。与具有不同引用的数组不同,字符串将被视为相等。