Implement add()
function is given mixed input (integers, float, undefined, string…)
const add = (...entries) => {
return entries.filter(Number.isInteger).reduce((sum, int) => {
return sum + int;
}, 0);
};
or get better solution
const add = (...entries) => {
return entries.reduce((sum, entry) => {
if (Number.isInteger(entry)) {
return sum + entry;
}
return sum;
}, 0);
};
Enter .some()
const add = (...entries) => {
let theSum = 0;
if (hasTwoOrMoreInts(entries)) {
// there are >= 2 integers, lets sum them
theSum = entries.reduce((sum, entry) => {
if (Number.isInteger(entry)) {
return sum + entry;
}
return sum;
}, 0);
}
return theSum;
};
const hasTwoOrMoreInts = entries => {
let lastIndex = -1;
let hasMinimumIntsCount = false;
const hasAnInt = entries.some((entry, index) => {
lastIndex = index;
return Number.isInteger(entry);
});
if (hasAnInt === true) {
// we've got one int, is there another?
const hasMoreInts = entries.slice(lastIndex + 1).some(Number.isInteger);
hasMinimumIntsCount = hasMoreInts === true && hasAnInt;
}
return hasMinimumIntsCount;
};
Enter .every()
const add = (...entries) => {
let theSum = 0;
const areAllInts = entries.every(Number.isInteger);
if (areAllInts === true) {
// are these indeed all ints?
theSum = entries.reduce((sum, int) => {
return sum + int;
}, 0);
}
return theSum;
};