簡體   English   中英

JavaScript:如何添加自定義 class object 作為數組的鍵

[英]JavaScript: How do I add a custom class object as a key of an array

我創建了一個自定義 class 屬性“名稱”

我還在 class 中添加了 function ,如果 2 個對象具有相同的名稱,則返回 true。 當我比較兩個同名的自定義對象時,這個 function 有效。

但是,當我將這些自定義 class 對象添加為數組/對象中的鍵時,我遇到了問題。

假設我的自定義 class object 是一個。 它也是數組中的一個鍵。 當我將 a 與數組中的鍵進行比較時,我發現 a 不在數組中。

我的 class 構造函數:

 class node { constructor(name) { this.name = name; } getname() { return this.name; } equiv(other) { return Boolean(this.name == other.name); } inarray(array) { for (let key in array) { if (this.name== key.name) { return true; } } return false; } } var a = new node("assss"); var b = new node("bssss"); var a2 = new node("assss"); var c = {a:1, b:2} console.log( a.equiv(a2) ) // true //But console.log( a.inarray(c) ) // false

a.equiv(a2)返回true

a.inarray(c)返回false

^ 這是我的問題

因為你已經更新了你的問題:

只需更換

if (this.name == key.name)

經過

if (this.name == key)

因為key是一個字符串(不是一個對象),它的值是'a''b'
它們是 { a :1, b :2 } 的鍵

 class node { constructor(name) { this.name = name; } getname() { return this.name; } equiv(other) { return Boolean(this.name == other.name); } inarray(array) { for (let key in array) { if (this.name == key) { return true; } } return false; } } var a = new node("a"), b = new node("b"), a2 = new node("a"), c = { a:1, b:2 }; console.log( a.equiv(a2) ) // true console.log( a.inarray(c) ) // true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM