Javascript 过滤器()中的forEach()函数

Javascript 过滤器()中的forEach()函数,javascript,ecmascript-6,Javascript,Ecmascript 6,我有以下方法: 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);

我有以下方法:

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
仍然为空


你知道为什么吗?

你的
过滤器
函数实际上并没有返回任何东西。要解决此问题,可以使用以下方法:

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
的函数返回一些东西,而不仅仅是更改状态。

您的
过滤器
函数实际上不会返回任何东西。要解决此问题,可以使用以下方法:

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
的函数返回一些东西,而不仅仅是更改状态。

您的
forEach
回调返回true,但是
过滤器
回调没有…您的
forEach
回调返回true,但是
过滤器
回调没有。。。