鍍金池/ 問答/數(shù)據(jù)分析&挖掘  C  HTML/ javascript 里面 set類型 判斷交集和并集

javascript 里面 set類型 判斷交集和并集

本人新手, 目前在學(xué)習(xí) Es6 里面的set數(shù)據(jù)類型時遇到了一點疑惑, 如下:
在關(guān)于阮一峰的 Es6 里面提到, 可以使用set類型進(jìn)行交集, 并集的判斷, 但是本人試了一下似乎并不成功, 想請教一下問題出在哪里
代碼

var a = new Set([[0, 1], [0, 0], [0, 2]])
var b = new Set([[0, 0], [0, 1]])

var union = new Set([...a, ...b]);
var intersect = new Set([...b].filter(x => a.has(x)));
console.log(union, intersect);

對于第一個union返回結(jié)果仍舊有5個, 是將所有的 a 與 b 的里面的元素都?xì)w到了一起, 但是個人認(rèn)為難道不應(yīng)該是結(jié)果只是 a 么, 因為 b 里面的一些元素和 a 里面的是完全一樣的

對于第二個intersect, 結(jié)果直接為一個空set, 但是如果是取交集的話不應(yīng)該是 b 么

另外假設(shè)我想要實現(xiàn)這樣的功能, 對于這個有點類似多維數(shù)組的 set, 該如何寫代碼拉力實現(xiàn)?

本人水平尚淺, 望指正

回答
編輯回答
賤人曾

set里,只有值和引用地址都完全相同,兩個元素才算是一樣的

2017年2月27日 02:07
編輯回答
怣痛

[0,0]!==[0,0] 分清楚基本類型和符合類型的相等比較
var a=[0,0]
var b=new Set([a]);
b.has(a)//true
b.has([0,0])//false

2018年5月6日 18:04
編輯回答
祉小皓

因為[0, 0] === [0, 0]是false,這兩個數(shù)組雖然值看起來是一樣的,但是存儲地址是不同的,引用類型的比較是比較變量指向的地址是否相同。
你要實現(xiàn)的功能,要么你自己寫一個去重的方法,判斷兩個數(shù)組的對應(yīng)位置是否相同,要么用JSON.stingify處理之后再比較。

2017年7月27日 03:35