javascript - 类型-/JavaScript - array.indexOf 始终返回 -1

标签 javascript arrays angular typescript

我使用 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/

相关文章:

javascript - 返回 false 在 IE 中不起作用。

javascript - 大多数中间件(如 compress)不再与 Express 捆绑在一起

angular - 如何在 Angular 应用程序中添加 ACE 编辑器荧光笔规则?

Angular组件宿主元素宽高均为0

css - Angular 2 : How to correctly automatically import normalize. CSS

JavaScript: "Dynamic"反向引用正则表达式替换

javascript - HTML。如何检查用户是否在表单中输入了文本?

java - 无法从 Byte 转换为 byte[] java

ruby - 扁平化 Ruby 数组

python - Numpy 在索引周围创建掩码数组的最快方法