Angular 2从数组中删除多个对象

时间:2016-09-09 13:37:06

标签: angular

我有一个包含多个对象的数组。我的应用程序可以选择“过滤”对象并返回过滤后的数组。

我就是这样做的:

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方法有关。但是我找不到这个问题的替代方案。

任何帮助?

1 个答案:

答案 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仍将包含所有原始元素。