给定一个数组[1, 2, 3, 4],如何找到其元素的总和?(在这种情况下,总和为10。)
[1, 2, 3, 4]
10
我认为$.each可能有用,但是我不确定如何实现它。
$.each
Array.prototype.reduce可用于遍历数组,将当前元素值添加到先前元素值的总和中。
console.log( [1, 2, 3, 4].reduce((a, b) => a + b, 0) ) console.log( [].reduce((a, b) => a + b, 0) )
您收到TypeError
console.log( [].reduce((a, b) => a + b) )
console.log( [1,2,3].reduce(function(acc, val) { return acc + val; }, 0) ) console.log( [].reduce(function(acc, val) { return acc + val; }, 0) )
如果非数字是可能的输入,您可能要处理呢?
console.log( ["hi", 1, 2, "frog"].reduce((a, b) => a + b) ) let numOr0 = n => isNaN(n) ? 0 : n console.log( ["hi", 1, 2, "frog"].reduce((a, b) => numOr0(a) + numOr0(b)) )
我们可以使用eval执行JavaScript代码的字符串表示形式。使用Array.prototype.join函数将数组转换为字符串,我们将[1,2,3]更改为“1 + 2 + 3”,其结果为6。
console.log( eval([1,2,3].join('+')) ) //This way is dangerous if the array is built // from user input as it may be exploited eg: eval([1,"2;alert('Malicious code!')"].join('+'))
当然,显示警报并不是可能发生的最糟糕的事情。我将其包括在内的唯一原因是作为对Ortund问题的回答,因为我认为这没有得到澄清。