gpt4 book ai didi

javascript - 传递给 JavaScript 函数的数组变量变得未定义

转载 作者:行者123 更新时间:2023-12-01 00:18:09 27 4
gpt4 key购买 nike

如果有人以其他方式询问这个问题,我深表歉意,但我的 google-fu 今天缺少。我今天刚开始学习 Javascript,在将数组传递给函数时遇到问题。我试图在每个索引处添加两个数组的值,但是在尝试读取第二个函数中 arr1 的长度时,sololearn 的代码 Playground 给我一个错误:“未捕获的类型错误:无法读取未定义的属性‘长度’” 。

我尝试将迭代器更改为“i <=6”,但它告诉我它无法读取“sum[i]...”行中未定义索引 0 处的属性。我还尝试使用 var 而不是 let 声明数组。

任何人都可以告诉我为什么数组没有正确传递到函数中吗?

function generateStats(){
let race = "halfOrc";
const halfOrc = [2,1,0,0,0,0];
let stats = [0,0,0,0,0,0];

switch(race){
case "halfOrc":
stats = sumArray(stats,halfOrc);
break;

//more code
}

function sumArray(arr1,arr2){
var sum = [];
for (let i = 0; i <= arr1.length;) {
sum[i] = arr1[i] + arr2[i];
i++;
return sum
}
}

最佳答案

例如,长度为 2 的数组具有有效索引 0 和 1,因此在与 array.length 进行比较时切勿使用 <= -

您还在 for 循环中返回,因此只有第一次迭代会运行 -

快速修复...更改i <=i <并移动return sum之后}并移动i++到 for 循环行。

这是您的代码 - 现在可以运行了

function generateStats() {
let race = "halfOrc";
const halfOrc = [2, 1, 0, 0, 0, 0];
let stats = [0, 0, 0, 0, 0, 0];

switch (race) {
case "halfOrc":
stats = sumArray(stats, halfOrc);
break;

//more code
}
console.log(stats);
}

function sumArray(arr1, arr2) {
var sum = [];
for (let i = 0; i < arr1.length; ++i) {
sum[i] = arr1[i] + arr2[i];
}
return sum
}
generateStats();

关于javascript - 传递给 JavaScript 函数的数组变量变得未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59621272/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com