有关数组索引的错误消息

时间:2017-04-19 15:14:42

标签: javascript arrays

为什么我收到错误消息:" Line [i]未定义"在以下代码中?这可能是微不足道的,但我无法修复它。

例如,如果我使用Line[0]Line[1]等,则可以使用

但我需要遍历循环。

var Line = [{ Func: "Function"}];
for (i = 0; i <= 15; i++) {
    Line[i].Func = "Function" + I;
}

5 个答案:

答案 0 :(得分:3)

您正在尝试迭代到i <= 15并在JavaScript评估Line[1]时收到错误,因为它是undefined

相反,您可以迭代Line数组的长度:

var Line = [{ Func: "Function"}];
for (var i = 0, len = Line.length; i < len; i++) {
  Line[i].Func = "Function" + i;
}

console.log(Line);

或使用Array.prototype.forEach()进行迭代:

var Line = [{ Func: "Function"}];
Line.forEach((el, index) => el.Func = "Function" + index);

console.log(Line);

或者按照自己的方式行事,但首先检查元素Line[i]是否存在:

var Line = [{ Func: "Function"}];
for (var i = 0; i <= 15; i++) {
  Line[i] && (Line[i].Func = "Function" + i);
  console.log(i);
}

console.log(Line);

答案 1 :(得分:1)

因为数组中只有一个元素。

var Line = [{ Func: "Function"}];
for (i = 0; i <= 15; i++) { console.log(i); Line[i].Func = "Function" + i;}

将打印0和1,然后它将抛出错误

答案 2 :(得分:0)

你的Line数组里面只有一个对象,你从0到15循环,所以在Line [0]之后它找不到Line [1]或Line [2]。 您可能想要将一个对象添加15次到Line。 在for循环中尝试这样的事情:

Line.push({Func:"Function" + i});

https://www.w3schools.com/jsref/jsref_push.asp

答案 3 :(得分:0)

您正在从0循环到15,并使用循环变量作为仅包含1个元素(index = 0)的数组的索引

看起来你正在尝试添加新元素

var Line = [{ Func: "Function"}];
for (i = 0; i <= 15; i++) {
    Line[i] = {Func:"Function" + i}; 
}

答案 4 :(得分:0)

你有一个单长的数组,你可以迭代到15个。所以,你可以检查数组限制,或提供最多15个默认值。

这是您可以提供最多15的默认值:

var Line = [{ Func: "Function"}];
for (var i = 0; i <= 15; i++) {
  if (Line[i] === undefined) {
      Line[i] = { Func: "Function"}
  }
  Line[i].Func = "Function" + i;
}

另一方面,无论元素编号如何,您都可以通过实际列表进行操作:

var Line = [{ Func: "Function"}];
for (var i = 0; i <= Line.length; i++) {
  Line[i].Func = "Function" + i;
}