отфильтровать и сравнить два массива в машинописи с условием - PullRequest
2 голосов
/ 29 сентября 2019

Как мне отфильтровать некоторые атрибуты с другим 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 , я мог бы использовать любое предложение о том, как решить эту проблему, и если есть лучшая параграф, спасибо

Ответы [ 3 ]

1 голос
/ 29 сентября 2019

Похоже, что вы ищете:

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));
    });
}

Сделаны следующие правки:

  1. Вы должны определить offenceCode как строку []
  2. Теперь вы можете перебрать массив demo и предварительно сформировать фильтр для offenceCode из предыдущей строки. Любое условие, которое будет выполнено, теперь будет зарегистрировано на консоли (вы можете изменить его согласно своему требованию)
1 голос
/ 29 сентября 2019

Вы можете использовать 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, если не найдет совпадение.

0 голосов
/ 29 сентября 2019
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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...