#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');
:
}