关于 JavaScript 判断 Set 集合中是否存在某元素的问题

2015-11-24 20:23:56 +08:00
 123321
有个 Set ,样式如下:
```
mySet{[1,1,1,2,1,0],[3,1,2,0,2,2],[0,2,2,3,2,3], ......}
```
现在判断[1,1,1,2,1,0]在不在 mySet 里时

* 参照[Set]( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#Using_the_Set_object),使用

```
console.log(mySet.has([1,1,1,2,1,0]));
```
输出 false

* 参照 in

```
console.log([1,1,1,2,1,0] in mySet);
```
输出 false

ps :使用 Set 主要是为了去重,其他的结构也在考虑,比如转 Set 为 Array 。因为不太懂 JavaScript ,搜索 stackoverflow 也没找到答案,求指点。
7499 次点击
所在节点    JavaScript
8 条回复
FrankFang128
2015-11-24 20:25:27 +08:00
值和引用的区别
123321
2015-11-24 20:27:00 +08:00
@FrankFang128 想输出为 true ,可以实现么?
123321
2015-11-24 20:45:01 +08:00
@FrankFang128 搜索到了,谢谢啦😁
haozhang
2015-11-24 20:53:02 +08:00
var a = [1,1,1,2,1,0]
var b = [1,1,1,2,1,0]
console.log(a === b) // false
本质上是: a 、 b 指向不同的数组,只是这两个数组的内容相同而已
bramblex
2015-11-25 03:13:26 +08:00
我就是因为这种蛋疼的坑才不用 ES6 的 Set 的,下面是我自己实现的。

这个是 equal ,判断两个 Set 是不是相等。
https://github.com/bramblex/simple/blob/master/src/Set.js#L36

用来判断的 equal 函数
https://github.com/bramblex/simple/blob/master/src/Utils.js#L248
123321
2015-11-25 09:15:10 +08:00
@haozhang 是的,昨天看了文档, object , array 之类的比较的是引用地址, Strings , numbers 之类的比较的是值。:[
123321
2015-11-25 09:18:57 +08:00
@bramblex 嗯,只好根据需求来实现。之前遇到 delay 的问题,也是没有 time.sleep 之类的方法😂
bramblex
2015-11-25 10:00:33 +08:00
@123321

关于 delay 这类异步的轮子我也有造过……

没事,这种东西都可以造的……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/238625

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX