JSFiddle - React, Tailwind, and code Playground

by asdf

JavaScript

const items = [
 {type: 'phone', name: 'iPhone', color: 'gold'},
 {type: 'laptop', name: 'Chromebook', color: 'gray'},
]
const excludes = [
 {k: 'color', v: 'gold'},
 {k: 'color', v: 'silver'},
 {k: 'type', v: 'tv'},
]
function applyFilters(items, excludes) {
 excludes.forEach(function(pair) {
   items = items.filter((item) => item[pair.k] !== pair.v);
 });
 return items;
}
/* imporove memory usage */
function applyFiltersPerf(items, excludes) {
  const len = excludes.length
  const arr = items.filter((item) => {
    for (let i=0; i<len; i++) {
          console.log('A:', i, item)
      if (item[excludes[i].k] === excludes[i].v) {
        return false
      }
      console.log('B:', i, item)
    }
    return true;
  });
 return arr;
}

applyFiltersPerf(items, excludes)