我使用的splice
函數從陣列和indexOf
函數來獲取的元素位置刪除的元素。型 -/JavaScript的 - array.indexOf總是返回-1
但是indexOf
返回總是-1
,雖然相同的元素是在數組中。
mycode的(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'檢查是否嚴格相等,你的'新的訂閱(主題)'永遠不可能等於已經存在的數組元素(因爲你剛剛創建了一個新的對象,它不在數組之前) – UnholySheep