Files
30-seconds-of-code/snippets/reducedFilter.md
2017-12-22 09:37:36 +02:00

1.5 KiB

reducedFilter

Filter an array of objects based on condition and return array with reduced objects.

// ----------------------------------- Input -----------------------------------// // 1. Data: the data to be filtered (array of objects) -------------------------// // 2. Condition: will be used for filtering (string) ---------------------------// // 3. outputProps: an array of properties that will be used to contruct --------// // new array of objects --------------------------------------------------------//

// ----------------------------------- Output ----------------------------------// // Filtered array with new objects. Properties of new objects are a subset of --// // properties of original objects ----------------------------------------------//

// ----------------------------------- Info ------------------------------------// // Used ES6 reduce -------------------------------------------------------------// // Dummy data for testing ------------------------------------------------------// // Generated with http://www.mockaroo.com/ -------------------------------------//

const reducedFilter = (data, condition, outputProps) => 
    data.reduce( (acc, item) => {
    if(eval(condition)) {
      const parsedObj = outputProps.reduce( (aggr, index) => {
        aggr[index] = item[`${index}`];
        return aggr;
      }, {});
      acc.push(parsedObj); 
    } 
    return (acc);
  }, []);

###Usage Example available in :

https://codepen.io/myapos/pen/dJGByW?editors=0112