Фильтр() в Angular2

#angular #filter #filtering

#угловой #Фильтр #фильтрация

Вопрос:

У меня есть

 Product: {code: string, description: string}
productsA: Product[]
productsB: Product[]
 

Я хочу получить productsC: Product[], который содержит все продукты productsA, которые имеют «код», отличный от кодов продуктов productsB

Пример:

   productsA = [{'c1', 'des1'}, {'c2', 'des2'}, {'c3', 'des3'}]
  productsB = [{'c1', 'des4'}]
  I want productsC = [{'c2', 'des2'}, {'c3', 'des3'}]
 

Как я могу сделать?

Комментарии:

1. нет ключа для кода продукта?

2. ‘code’ — это ключ

Ответ №1:

Я думаю, вам нужны все продукты productsA , кроме того, что productsB включает?

Тогда поехали.

 const productA = [{code: 'c1', description: 'desc1'}, {code: 'c2', description: 'desc2'}, {code: 'c3', description: 'desc3'}];
const productB = [{code: 'c1', description: 'desc1'}];
const productC = [];

productA.forEach(prodA => {
  productB.forEach(prodB => {
    if (prodA.code != prodB.code) {
      productC.push(prodA);
    }    
  });
});

console.log(productC); 

Ответ №2:

Вы можете сделать это с differenceBy помощью of lodash .

 import * as _ from 'lodash-es';

yourFunc() {
      :
    const productsC = _.differenceBy(productsA, productsB, 'code');
      :
}