var o = [1,2,3,5,6,7,8]
var res = o.reduce(function(x,y){
return !((y-x)===1)?y-1:'Nothing'
})
console.log(res)//7
输出应该是 4,想知道是否可以使用 reduce 或功能性(不是通过循环)?它仅在缺失值在数组的最后一个值之前有效。
最佳答案
您可以使用reduce
计算所有元素的实际总和,然后从目标总和中减去它(n(a0+an)/2
)。这会为您提供缺失的号码。
var o = [1,2,3,5,6,7,8];
var len = o.length;
var sum = (len + 1) * (o[0] + o[len - 1]) / 2;
var res = sum - o.reduce((x,y) => x + y);
console.log(res);
请注意,这适用于任何起始值和任何步骤,例如对于 [3,5,7,11]
,它将正确打印 9
。唯一的要求是 o
应该是等差级数。
关于javascript - 使用 .reduce 查找序列中缺失的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42887880/