gpt4 book ai didi

javascript - 当条目存在时,删除 Typescript 接口(interface)列表中的元素,始终显示负索引

转载 作者:行者123 更新时间:2023-12-01 01:58:48 24 4
gpt4 key购买 nike

我有一个界面:

export interface ISchoolsPreview {
// Shared
AgeID: string;
School_name?: string;
}

我有一个由复选框中的更改触发的函数:

onChange(code: string, name: string, check: boolean): void {
const tempPreview: ISchoolsPreview = {AgeID: code, School_name: name};

if (check) {
this.schoolsPreview.push(tempPreview);

} else {
//This is where the error lies
const index = this.schoolsPreview.indexOf(tempPreview);
if (index > -1) {
this.schoolsPreview.splice(index, 1);
}

}
}

检查由复选框是否已选中或未选中来定义。如果选中,则会将 ISschoolsPreview 的新元素添加到 schoolPreview。这有效,当我单步执行时,它会显示并正确显示在我的前端。

但是,当我取消选中复选框时,即使我传递相同的条目,indexOf(tempPreview) 也始终返回 -1。

如何正确从界面列表中删除元素

最佳答案

您应该始终根据对象中的某些属性查找对象的索引,而不是如下使用整个对象本身。

const index = this.schoolsPreview.findIndex((obj) => obj['Property'] === code);

如果您认为数组中会有重复的代码,那么您可能必须为每个对象生成唯一的 ID,并根据该 ID 进行搜索。

注意:我对此不确定,但仅当对象引用同一内存时才将对象传递给索引,同时返回 true。如果您尝试查找位于新内存中的新对象,则可能会返回 false。有人可以纠正我这一点。

关于javascript - 当条目存在时,删除 Typescript 接口(interface)列表中的元素,始终显示负索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50780294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com