2016-09-09 8 views
-2

私は複数のオブジェクトを持つ配列を持っています。私のアプリには、オブジェクトを「フィルタリング」してフィルタリングされた配列を返すオプションがあります。角2は配列から複数のオブジェクトを削除します

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

array.filterメソッドを使用する –

答えて

0

これは、いくつかの述語に基づいて配列をフィルタリングするのと同じように思えます。

let newArray = this.result.combos.filter(combo => combo.atk < minStat || combo.atk > maxStat); 

newArraycombo.atk < minStat || combo.atk > maxStatthis.resultは、まだすべてのオリジナルの要素が含まれます一致するすべての要素で満たされます:あなたはfilter機能を使用することができます。

関連する問題