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)