Javascript 使用条件筛选并比较typescript中的两个数组

Javascript 使用条件筛选并比较typescript中的两个数组,javascript,angular,typescript,Javascript,Angular,Typescript,如何使用另一个数组过滤某些属性,如果它与条件匹配,它将返回另一个属性,例如: Array1 = [{offenceCode: 'JLN14', offenceDesc:'Speeding'}] Array2 = [{id:0, offenceCode: 'JLN14'}, {id:1, offenceCode: 'JLN13'}] 首先,我得到Array2并将属性offenceCode与Array1进行比较,如果它得到相同的属性,Array1应该返回OffenceDesc 这就是我曾经尝试过

如何使用另一个
数组过滤某些属性,如果它与条件匹配,它将返回另一个属性,例如:

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
    }
  }
目前我不知道如何解决这个问题,这是我的,我可以使用任何关于如何解决这个问题的建议,如果有更好的方法,谢谢你可以使用它

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

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

看起来您正在查找:

ngOnInit(){
  let Array1 = [{offenceCode: 'JLN14', offenceDesc:'Speeding'}]
  let Array2 = [{id:0, offenceCode: 'JLN14'}, {id:1, offenceCode: 'JLN13'}]

  let object = Array1.filter(x => x.offenceCode == Array2.filter(y => y.offenceCode == x.offenceCode)[0].offenceCode)[0]

  return object ? object.offenceDesc ? null
}
offenceCode: string[];

ngOnInit() {
  this.offenceCode = this.items.map(x => x.offenceCode1);
  this.demo.forEach(x => {
    this.offenceCode
      .filter(e => e === x.offenceCode)
      .forEach(e => console.log(x.offenceDesc));
    });
}
进行了以下编辑:

  • 您应该将
    offenceCode
    定义为字符串[]
  • 现在,您可以在
    demo
    数组上循环,并对前一行的offenceCode执行一个过滤器。满足的任何条件现在都将记录到控制台(您可以根据需要进行更改)

  • ++你的stackblitz包含很多文件。请创建一个应用程序。如果是,将更新我的stackblitz@SudarshanaDayananda如果offenceCode的条件相同,我只需要返回offenceDesc。您还可以添加几个您期望的输出示例(使用不同的输入)?我的stackblitz最小,@NicholasK