2016-09-09 6 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 기능을 사용할 수 있습니다.