createSelector

by Artem

JavaScript

'use strict';

function createSelector(...args) {
	const cb = args[args.length - 1];
  const results = [];
  
  return function(state) {
  	args.slice(0, -1).forEach(fn => {
    	results.push(fn(state));
    });
    
    return cb.apply(null, results);
  };
}

const state = {
	users: ['Artem', 'Illuxa'],
  ages: [19, 25],
};

const selector = createSelector(
	state => state.users,
  state => state.ages,
  (users, ages) => {
  	console.log('Users: ', users);
    console.log('Ages: ', ages);
  }
);

selector(state);