javascript - forEach() 里面的 filter()

标签 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 仍然是空的。

知道为什么吗?

最佳答案

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

关于javascript - forEach() 里面的 filter(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46938541/

相关文章:

javascript - SELECT 绑定(bind) : clearing the options observable array sets value observable property to undefined. 如何避免?

javascript - masonryjs 和 mustachejs 之间的冲突

javascript - jQuery 选择与纯 JavaScript

javascript - 哪些浏览器支持 ECMAScript 6 的导入和导出语法?

javascript - ng-disabled 不使用 <i> 标签使用 font-awesome

javascript - PHP 函数末尾的 0

javascript - Javascript 对象中的箭头函数

javascript - 在 if 语句 block 中使用 let 定义尚 undefined variable 的替代方法是什么?

javascript - 通过引用或复制导入 ES6 变量

javascript - React 从表中删除列