在 JS 中添加数字数组会变得未定义,因为数组不接受变量来选择值

Adding an array of numbers in JS gets undefined because array doesn't accept variable to pick a value

提问人:Gaenox L 提问时间:7/2/2021 更新时间:7/2/2021 访问量:393

问:

法典

function Taxes(taxRate, purchases) {
    let total = 0;
    console.log(purchases);
    for (let i = 0; i <= purchases.length; i++) {
        total += purchases[i];
    }
    console.log(total);
    return total * (taxRate/100 + 1);
}
console.log(Taxes(18, [15, 34, 66, 45])); 

解释

我试图做一个加税器。该程序将给定的数组列表(已购买商品的价格)相加,将它们相加,然后将答案乘以税率。我将其转换为 python 代码,它完美运行。

但是,我遇到了一个错误,在for循环中,总数没有与索引值相加,因此当我尝试记录它时,它会给出一个未定义的错误。我试图用一个数字替换它,它起作用了。但是当我使用变量时,它没有。如何使用变量来选择索引。

旁注

我知道我不必使用 for 循环来汇总数组中的数字,但假设我想这样做

JavaScript 数组索引 undefined-index

评论

3赞 Andreas 7/2/2021
“总计不与索引值相加” - 是的。“当我尝试记录它时,它给出了一个未定义的错误” - 因为数组是零索引的,因此最后一个元素位于索引处 ->应该是purchases.length - 1i <= purchases.lengthi < purchases.length
0赞 VLAZ 7/2/2021
什么是差一错误,如何解决?

答:

0赞 Mario Varchmin 7/2/2021 #1

你的代码几乎可以正常工作。但是你会得到一个错误,因为 Javascript 数组索引是从零开始的:如果你的数组有元素,你就对以 开头的元素进行寻址。因此,循环中的循环条件必须是 而不是 。4array[0]array[3]fori < purchases.lengthi <= purchases.length

function Taxes(taxRate, purchases) {
    let total = 0;
    console.log("Purchases:", purchases);
    for (let i = 0; i < purchases.length; i++) {
        total += purchases[i];
    }
    console.log("Total: ", total);
    return total * (taxRate/100 + 1);
}
console.log("Total incl. tax:", Taxes(18, [15, 34, 66, 45])); 

评论

0赞 Gaenox L 7/3/2021
哦,我明白。因为我添加了一个 if equal 元素,所以当我不再变小时,它不会停止循环。感谢您的帮助!我真的在挠头