Partical Sums Function
by evgkch
JavaScript
function getParticalSums(range, stub = null) {
const rangeLength = range.length,
buffer = [];
let sum;
for (let i = 0; i < rangeLength; i++)
{
let value = range[i];
if (typeof value === 'number' && !isNaN(value))
{
sum = (sum || 0) + value;
buffer.push(sum);
}
else
buffer.push(stub);
}
return buffer;
}
test(getParticalSums, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
.equals([0, 1, 3, 6, 10, 15, 21, 28, 36, 45]);
test(getParticalSums, [null, null, null, null, null, null, null, null, null, null], 0)
.equals([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
test(getParticalSums, [null, 1, null, 3, 4, null, null, null, null, 9])
.equals([null, 1, null, 4, 8, null, null, null, null, 17]);
test(getParticalSums, [0, null, 2, 3, null, 5, 6, 7, 8, null])
.equals([0, null, 2, 5, null, 10, 16, 23, 31, null]);
function test(fn, ...args) {
const v = fn.call(fn, ...args);
const vLength = v.length;
return {
equals: (result) => {
let passed = true;
for (let i = 0; i < vLength; i++)
passed = passed && (v[i] == result[i]);
console.log(passed ? 'Test passed! Congrats!' : 'Oh... Test failed!');
}
};
}