我使用 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
。
/image/vfh4N.jpg (不知何故我无法上传照片,所以这是链接)
最佳答案
您还可以使用Array.prototype.find()它比 map
函数需要更少的迭代:
let index: number;
this.subs.find((item, i) => { if (item.topic === topic) index = i });
this.subs.splice(index, 1);
关于javascript - 类型-/JavaScript - array.indexOf 始终返回 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42658752/