Лучший способ сравнить и установить объекты в списках / массив (внешний интерфейс angular - машинопись)? - PullRequest
0 голосов
/ 13 апреля 2020

Я знаю, что это может сработать, но я также считаю, что есть лучший способ сделать это

Поэтому у меня есть два списка / массива с разными объектами, но с одним общим атрибутом. Для каждого элемента в list1 я хочу найти элемент в list2 и установить атрибут ...

тип obj1 отличается от типа obj2

  for(let obj1 of this.list1) {
    for(let obj2 of this.list2) {  
        if(obj1.fieldA == obj2.fieldB) {
            obj1.fieldC = obj2.fieldD;
        }
    }   
  }

1 Ответ

1 голос
/ 13 апреля 2020

Создайте карту с fieldB в качестве ключа и fieldD в качестве значения.

Итерируйте list1, и, если на карте найдено fieldA, установите значение в fieldC:

const map = new Map(this.list2.map(({ fieldB, fieldD }) => [fieldB, fieldD]));

for(const obj1 of this.list1) {
  if(map.has(obj1.fieldA)) {
    obj1.fieldC = map.get(obj1.fieldA);
  }
}
...