filter()中的forEach()

时间:2017-10-25 17:25:55

标签: 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);
              return true;
            }
        });
      });
}

虽然true已输出到控制台,但this.devices仍为空。

知道为什么吗?

1 个答案:

答案 0 :(得分:6)

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