我有一个包含多个对象的数组。我的应用程序可以选择“过滤”对象并返回过滤后的数组。
我就是这样做的:
this.result.combos.forEach((combo) => {
console.log("Analyzing combo:");
console.log(combo);
if (combo.atk < minStat || combo.atk > maxStat)
{
this.result.combos.splice(this.result.combos.indexOf(combo), 1);
console.log("COMBO HAS BEEN REMOVED");
}
else
console.log("COMBO HAS BENE STAYED");
});
我的问题是,我需要多次运行此方法才能达到结果。每次运行此方法时,我的对象都会被部分过滤。
例如:我有200个对象,我过滤它们的minStat / maxStat值,只显示minStat / maxStat值为50/100的记录。 代码将从数组中删除大约70条记录,但如果minStat / maxStat为50-100,则会保留很多结果。
我一直在深入研究这个问题,我想这与splice
方法有关。但是我找不到这个问题的替代方案。
任何帮助?
答案 0 :(得分:0)
听起来你想要做的是根据一些谓词过滤数组。您可以使用filter功能:
let newArray = this.result.combos.filter(combo => combo.atk < minStat || combo.atk > maxStat);
newArray
将填充与combo.atk < minStat || combo.atk > maxStat
匹配的所有元素,而this.result
仍将包含所有原始元素。