我有两个对象,看起来或多或少像这样:
export const recipes: Recipe[] = [
new Recipe( id: "Green", scenario: ["1", "2"]),
new Recipe( id: "Blue", scenario: ["1", "2","2"])
];
export const scenarios: Scenario[] = [
new Scenario( id: "1", ...),
new Scenario( id: "2", ...)
];
在我的食谱模型中,我创建了一个函数来通过其 id: string
检索我的场景:
getScenario(): Scenario[] {
return scenarios.filter(scenario => this.scenario.includes(scenario.id));
}
此函数过滤与 id: string
匹配的每个场景。
我的问题是,如果我的属性 scenario: string[]
多次包含相同的 id: string
,它仍然会给我一个带有 的数组>["1", "2"]
而不是 ["1", "2","2"]
,这是我想要的结果。
最佳答案
您正在过滤场景
,这意味着每个场景(1、2、3 等)都将被访问一次。您需要颠倒顺序并循环 this.scenario
因为您不能在此处使用过滤器,因为您实际上需要存储在 scenarios
中的场景,所以您的 getScenario()
函数应该是
getScenario(): Scenario[] {
return this.scenario.map(scenarioValue => scenarios.find(s => s.id == scenarioValue));
}
关于javascript - 将filter() 与includes() 一起使用的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58122885/