2017-10-25 3 views
-1

I 이하의 방법이 :대해 forEach() 필터() 안의

getDeviceErrors(error) { 
this.devices = this.data.segment.data.devices.filter((device) => { 
      device[this.data.label].error.forEach((errorObj) => { 
      if (errorObj.id === error.id) { 
       console.log(true); 
       return true; 
      } 
     }); 
     }); 
} 

true 있지만 this.devices가 여전히 비어 콘솔에 출력된다.

왜 그런가?

+4

'forEach' 콜백은 true를 반환하지만'filter' 콜백은 반환하지 않습니다 ... – ASDFGerte

답변

4

filter 함수는 실제로 아무 것도 반환하지 않습니다.

getDeviceErrors(error) { 
    this.devices = this.data.segment.data.devices.filter((device) => { 
     return device[this.data.label].error.some((errorObj) => { 
      return errorObj.id === error.id; 
     }); 
    }); 
} 

을 그리고 그런데 :이 문제를 해결하려면 다음과 같이 Array.prototype.some을 사용할 수 나는 함수가 뭔가를 반환하는 getDeviceErrors라고 그냥 상태를 변경하지 기대.

관련 문제