2017-05-25 79 views
1

我正在嘗試使用arr.includes(item)。如果項目是數組的一個元素,該函數應該返回True。但它似乎不能用多維數組來完成。看看這張截圖(在控制檯上運行節點):Arr.includes(item) - 我可以使用多維數組嗎?

enter image description here

我得到了我的谷歌瀏覽器類似的結果。

是因爲它是EC6功能,還沒有完全實用?

沒有關於Mozille page上這樣的問題的信息。

+1

nope,因爲'includes()'通過身份進行比較,而不是(某些)相等。選中這個:'[0,1] === [0,1]'這也是不正確的。 – Thomas

+0

您將不得不使用'array.some' +'array.every'組合的組合。 – Rajesh

+0

Array.includes()在Internet Explorer中不起作用。 –

回答

5

不,你不能使用它在深層結構,因爲它執行===測試,檢查該操作數是相同對象,這種情況發生不是兩個(不同的)對象具有相同的內容。

在您鏈接到的MDN頁面上有一個polyfill,您可以在sameValueZero()嵌套函數中看到===測試。因爲對象傳遞給.includes

let a = [0, 1]; 
let b = [1, 2]; 
let c = [a, b]; 
c.includes(b); 
> true 

真的是中都包含的c相同的對象:

基於上述原因,這實際上將返回true。

+0

所以,如果我的理解是正確的,它必須與數組作爲參考/地址,而我實際傳遞給函數的是地址。 – Ben

+0

@非常好,儘管JS實際上並沒有給你任何地址/參考的可見性。 – Alnitak

相關問題