Vue. js - Фильтровать массив JSON по другому массиву JSON - PullRequest
0 голосов
/ 05 августа 2020

У меня есть массив JSON под названием products и еще один под названием deletedProducts.

Я хочу отфильтровать те продукты, которых нет в deletedProducts.

Пример:

products = [
  {
    id: 1,
    name: 'Box'
  },
  {
    id: 2,
    name: 'Lamp'
  }
]
deletedProducts = [
  {
    id: 1,
    name: 'Box'
  }
]

Результат должен быть таким:

result = [
  {
    id: 2,
    name: 'Lamp'
  }
]

Ответы [ 2 ]

1 голос
/ 05 августа 2020

попробуйте фильтровать и найти методы:

let result =products.filter(prod=>{
   return !deletedProducts.find(dprod=>{
         return dprod.id===prod.id;
    })

})

let products = [{
    id: 1,
    name: 'Box'
  },
  {
    id: 2,
    name: 'Lamp'
  }
]

let deletedProducts = [{
  id: 1,
  name: 'Box'
}]

let result = products.filter(prod => {
  return !deletedProducts.find(dprod => {
    return dprod.id === prod.id;
  })

})

console.log(result)
0 голосов
/ 05 августа 2020

попробуйте эту функцию сравнения и фильтр. (ссылка по массиву элемента "id" в этом примере)

 let products = [
  {
    id: 1,
    name: 'Box'
  },
  {
    id: 2,
    name: 'Lamp'
  }
]

let deletedProducts = [
  {
    id: 1,
    name: 'Box'
  }
]

function comparer(otherArray){
      return function (current) {
          return otherArray.filter(function(other) {
              return other.id === current.id
          }).length===0;
        }
    }


var result=products.filter(comparer(deletedProducts ));

console.log(result);
...