我们有一组整数,并且需要从该组的总和中减去一个值。
像这儿,
[4, 5, 6, 7, 8] − 25
如果我们从每个数字中平均减去,我们将得到-
[−1, 0, 1, 2, 3]
但是,我们不希望任何数字小于0。
因此,如果我们正在编写算法来执行此操作,则负数将相等地溢出到剩余数中,现在我们将有-
[0, 0, 1, 2, 3] − 1
进行结果集-
[0, 0, 1 − 0.333, 2 − 0.333, 3 − 0.333]
请注意,这正是我们想要的结果。
所有的负值甚至会溢出到其余的正值中。
我们需要编写一个JavaScript函数,该函数将数字数组作为第一个参数,将总和作为第二个参数。
然后,该函数应计算均匀减去并分配的数组并将其返回。
为此的代码将是-
const arr = [4, 5, 6, 7, 8]; const subtract = (arr, sum) => { return arr.map((el, index, array) => { const rem = array.length − index const avg = sum / rem; const toSubtract = Math.min(avg, el); sum −= toSubtract; return el − toSubtract; }); }; console.log(subtract(arr, 25));
输出结果
控制台中的输出将是-
[ 0, 0, 0.666666666666667, 1.666666666666666, 2.666666666666666 ]