2017-10-25 19 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関数は実際に何も返しません。次のようにこれを修正するには、Array.prototype.someを使用することができます。

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

ところで:私はgetDeviceErrorsと呼ばれる機能が何かを返すだけの状態を変更しないことを期待します。

関連する問題