繁体   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