我需要对数组的所有元素求和,直到输入的选定值(在此示例中为前四个元素)为止:
HTML:
<input id="VAL" value="4" />
<button onclick="SUM()">BUTTON</button>
SUM: <span id="bubu"></span>
JS:
var numbers = [1, 2, 3, 4, 5];
function getSum(x,y) {return x+y;}
function SUM() {
document.getElementById("bubu").innerHTML = numbers.reduce(getSum);
}
现在所有元素的总和可以正常工作。但是,如何添加一个循环以仅获取所需的总和?
答案 0 :(得分:4)
至少有两种方法:
答案 1 :(得分:1)
使用for loop
,非常简单。
var numbers = [1, 2, 3, 4, 5];
let upTo = 4;
var res = 0;
for(let i = 0; i<upTo; i++){
res += numbers[i];
}
console.log(res)
使用reduce()
var numbers = [1, 2, 3, 4, 5];
let upTo = 4;
var res = numbers.reduce((a,e,i)=>(i<upTo)?a+e:a+0)
console.log(res)
答案 2 :(得分:1)
使用reduce index参数: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
var numbers = [1, 2, 3, 4, 5];
window.SUM = function() {
var numberOfElements = document.getElementById("VAL").value;
document.getElementById("bubu").innerHTML = numbers.reduce(function(x, y, i){
if(i <= numberOfElements-1) {
return x+y;
} else {
return x;
}
});
}
答案 3 :(得分:1)
如果您向处理程序提供了reduce
来指示需要总和的索引,那么也可以单独使用limit
进行此操作。例如如果您需要总计4个元素,则限制为3。
function onClickHandler(limit) {
return numbers.reduce(function (acc, val, index) {
return index < limit ? acc : acc + val
}, 0)
}
希望这会有所帮助。