【发布时间】:2017-03-07 21:33:08
【问题描述】:
我使用splice 函数从数组中删除一个元素,并使用indexOf 函数获取元素位置。
但indexOf 总是返回-1,尽管数组中存在相同的元素。
我的代码(Angular2):
subToDelete : Subscription;
public unsubscribe(topic:string) {
this.subToDelete = new Subscription(topic);
console.log("DeleteIndex: ",this.subs.indexOf(this.subToDelete));
this.subs.splice(this.subs.indexOf(this.subToDelete),1);
console.log("SubTo Delete: ",this.subToDelete);
this.subs.forEach(element => {
console.log("Subscribed to: ",element);
});
}
这是控制台输出,您可以在其中看到,应该删除的元素包含在数组中,但 indexOf 仍然返回 -1。
http://imgur.com/a/HGz5c(不知怎么上传不了照片,这里是链接)
【问题讨论】:
-
由于您的数组似乎存储对象并且
indexOf检查严格相等,因此您的new Subscription(topic)永远不会等于已经存在的数组元素(因为您刚刚创建了一个不在数组之前)
标签: javascript arrays angular typescript