javascript - 为什么第二个if条件不执行

标签 javascript arrays angular

我有以下数据

[
  {
    "itemType": "HEADER",
    "createdBy": "Jake",
    "deliveredBy": "Paul",
  },
  {
    "itemType": "HEADER_DATA",
    "createdBy": "Ryan",
    "deliveredBy": "Blair",
  },
  {
    "itemType": "HEADER_DATA",
    "createdBy": "John",
    "deliveredBy": "Doe",
  },
  {
    "itemType": "HEADER_DATA",
    "createdBy": "Sally",
    "deliveredBy": "Hansen",
  }
]

我想按项目类型分隔项目

  test(itemType: string) {
    this.service
      .getData(itemType)
      .pipe()
      .subscribe(([{itemType, createdBy, deliveredBy}]) => {
        if (itemType === 'HEADER') {
          console.log('1');
        }
        else if (itemType === 'HEADER_DATA') {
          console.log('2');
        }
      });
  }

控制台永远不会到达2。我知道这是一个简单的逻辑问题,但我已经研究了一段时间,但似乎无法弄清楚。

感谢您的时间和帮助

Stackblitz这里

最佳答案

因为您在订阅时收到一个数组,并且您仅解构该数组的第一个元素。如果你想记录每一个,你可以更改为:

data.pipe().subscribe((arr) => {
  arr.forEach(({itemType, createdBy, deliveredBy}) => {
  if (itemType === "HEADER") {
    console.log("1");
  } else if (itemType === "HEADER_DATA") {
    console.log("2");
  }
 })
});

关于javascript - 为什么第二个if条件不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66228864/

相关文章:

javascript - 如果提交了输入字段的名称,为什么表单不使用 javascript 提交

javascript - 脱咖啡因 : Double Brackets

javascript - 如何在下一个上一个悬停时滑动猫头鹰旋转木马?

php - 当使用 php 和 mysql 列出数据库中的信息时,如何使第一行看起来与其余行不同?

mysql - 如何将 NodeJs 响应转换为嵌套的 json 响应

javascript - Angular 2关注点击/事件后的第一个无效输入

angular - 在 typescript 类中使用数组

javascript - 当使用 Vue 隐藏或显示元素时,MDL 样式会丢失

arrays - for 循环中的 PL/pgSQL "Malformed array literal"错误

javascript - 在 Ionic 4 中关闭 Modal 后如何调用函数