ds-algo-study
Version:
Just experimenting with publishing a package
43 lines (32 loc) • 1.1 kB
JavaScript
/*******************************************************************************
Write a function `xorSelect` that accepts an array and two callback as arguments.
The function should return a new array containing elements of the original array
that result in true when passed in one of the callbacks, but not both.
Examples:
let isEven = function(n) {
return n % 2 === 0;
};
let isPositive = function(n) {
return n > 0;
};
console.log(xorSelect([-2, -1, 1, 2, 3, 4], isEven, isPositive));
// [ -2, 1, 3 ]
let longString = function(s) {
return s.length > 4;
};
let startsA = function(s) {
return s[0] === "a";
};
console.log(
xorSelect(["art", "academy", "app", "cat", "buttery"], longString, startsA)
);
// [ 'art', 'app', 'buttery' ]
*******************************************************************************/
let xorSelect = function(array, cb1, cb2) {
let selected = array.filter(function(el) {
return (cb1(el) || cb2(el)) && !(cb1(el) && cb2(el));
});
return selected;
};
//******************---------------------******************\\*/
module.exports = xorSelect;