首页 > 解决方案 > 过滤并比较打字稿中的两个数组与条件

问题描述

如何用另一个过滤某些属性,array如果它符合条件,它将返回另一个属性,例如:

Array1 = [{offenceCode: 'JLN14', offenceDesc:'Speeding'}]

Array2 = [{id:0, offenceCode: 'JLN14'}, {id:1, offenceCode: 'JLN13'}]

首先我得到Array2并将属性offenceCode与进行比较Array1,如果它具有相同的属性,Array1则应该返回OffenceDesc

这是我尝试过的:

  demo = [
    {
      offenceCode: 'JLN14',
      offenceType: '7',
      offenceDesc: 'emergency lane abuse'
    },
    {
      offenceCode: 'BRG04',
      offenceType: '8',
      offenceDesc: 'speeding'
    },
    {
      offenceCode: 'CRG04',
      offenceType: '9',
      offenceDesc: 'emergency lane abuse'
    }
  ];

  offenceCode: any;

  ngOnInit() {
    this.offenceCode = this.items.map(x => x.offenceCode1);
    console.log(this.offenceCode);
    if(this.demo.forEach(x => x.offenceCode === this.offenceCode)) {
      // return offenceDesc
    }
  }

目前我不知道如何解决这个问题,这是我的stackblitz 演示,我可以使用任何关于如何解决这个问题的建议,如果有更好的做法,谢谢

标签: javascriptangulartypescript

解决方案


您可以使用Array.prototype.findIndex来执行此操作。

const matchIndex = this.demo.findIndex(x => x.offenceCode === this.offenceCode);
if(matchIndex !== -1) {
  return this.demo[matchIndex].offenceDesc;
}
return undefined;

请注意,findIndex如果没有找到匹配项,它将返回 -1。


推荐阅读