Skip to content

Instantly share code, notes, and snippets.

@szmeku
Created March 6, 2020 11:54
Show Gist options
  • Save szmeku/33b12194a109bbd9d23e864fec48d9a0 to your computer and use it in GitHub Desktop.
Save szmeku/33b12194a109bbd9d23e864fec48d9a0 to your computer and use it in GitHub Desktop.
// BEFORE
const filteredItems = (filtersArr, rowsArr, filterCounter = filtersArr.length) => {
if(filterCounter) {
let newArr = rowsArr.filter(item => item[filtersArr[filterCounter-1].name] === filtersArr[filterCounter-1].value);
return filteredRows(filtersArr,newArr,filterCounter-1);
let newArr = rowsArr.filter(item => {
const columnItem = _.filter(_.propEq('name',filtersArr[filterCounter-1].name),(item.data))
return columnItem[0].value === filtersArr[filterCounter-1].value;
});
return filteredItems(filtersArr,newArr,filterCounter-1);
} else {
return rowsArr;
}
};
// AFTER
const newPredicate = (filterOption) => {
return (tableItem) => _.find(_.propEq('name',filterOption.name), tableItem.data).value === filterOption.value;
};
export const filteredItems = (filtersArr, rowsArr) => {
if(filtersArr.length === 0){
return rowsArr;
}
return filteredItems(
_.tail(filtersArr),
_.filter(newPredicate(_.head(filtersArr)), rowsArr)
);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment