使用过滤器和其他工具在JS/TS中更新模型



我有一个这样的模型:

private model:Array<IMyTest> = [];

MyTest有一个成员:

// the testId is auto loaded from a db with a valid number while the isCorrect starts as null
testId:number;
isCorrect: boolean;

我在另一个组件中有一些代码,我想在true或false之间进行isCorrect切换。

所以我写了一个这样的方法,从这个开始:

this.model.filter(q => q.testId === testId) ...

但我想让一个返回集的this.model在为null或false时为true,在为true时为false。

如何正确链接?我已经有一段时间没有做前端的事情了。

/////编辑以下错误答案:

private updateTest(testId:number): void {
this.model = this.model.forEach(q => q.testId === testId && q.isCorrect = !q.isCorrect);
}

我得到的错误是第一个this。类型为void的模型不能分配给类型为MyTest[]和=!q.isCorrect在等号下有一条红线。

如果您要用testId切换更新项目的isCorrect,下面是您要做的。

this.model = this.model.map(
q => q.testId === testId ? { ...q,isCorrent:!q.isCorrent } : q
)

如果你不想有一个新的对象(this.model(,那么它应该是

this.model.forEach(
q => q.testId === testId && (q.isCorrect = !q.isCorrect )
)

过滤器将返回一个带有testId项目的新对象,之后您必须将其插入回this.model数组,如果您想将其链接到,则不会是这样

最新更新