javascript - JavaScript 中的数组错误 : Uncaught TypeError: Cannot read property 'x' of undefined

标签 javascript arrays for-loop

我在 newEntry.x 部分遇到“未捕获的类型错误:无法读取未定义的属性‘x’”。我不确定为什么它不会读取 for 循环中的对象,因为在控制台中,它似乎可以识别它们的值。

我正在编写一个函数,该函数返回带有相邻对象中点的扩展数组。它会执行一定次数的迭代,因此会出现嵌套的 for 循环。我不知道该怎么做,因为我尝试修改 for 循环和拼接,但没有成功。

function newList(iterations) {

  for (let i = 0; i < iterations; i += 1) {
    let concordiaLogo = [
      { x: 12.5, y: -100 },
      { x: 12.5, y: -112.5 },
      { x: 12.5, y: -125 },
      { x: 68.75, y: -68.75 },
      { x: 125, y: -12.5 },
      { x: 112.5, y: -12.5 },
      { x: 100, y: -12.5 },
      { x: 100, y: 0 },
      { x: 100, y: 12.5 },
      { x: 112.5, y: 12.5 },
      { x: 125, y: 12.5 },
      { x: 68.75, y: 68.75 },
      { x: 12.5, y: 125 },
      { x: 12.5, y: 112.5 },
      { x: 12.5, y: 100 },
      { x: 0, y: 100 },
      { x: -12.5, y: 100 },
      { x: -12.5, y: 112.5 },
      { x: -12.5, y: 125 },
      { x: -68.75, y: 68.75 },
      { x: -125, y: 12.5 },
      { x: -112.5, y: 12.5 },
      { x: -100, y: 12.5 },
      { x: -100, y: 0 },
      { x: -100, y: -12.5 },
      { x: -112.5, y: -12.5},
      { x: -125, y: -12.5 },
      { x: -68.75, y: -68.75 },
      { x: -12.5, y: -125 },
      { x: -12.5, y: -112.5 },
      { x: -12.5, y: -100 },
      { x: 0, y: -100 }
    ]
    for (let i = 0; i < (concordiaLogo.length-1) * 2; i += 2) {
      let newEntry = { x: 0, y: 0 };
      newEntry.x = (concordiaLogo[i].x + concordiaLogo[i+1].x)/2;
      newEntry.y = (concordiaLogo[i].y + concordiaLogo[i+1].y)/2;
      concordiaLogo.splice(i + 1, 0, newEntry);
    }
  }
  return concordiaLogo;
}

输入为 3 时,我期望得到一个 32*2**3 的数组,但它仅返回“未捕获的类型错误:无法读取未定义的属性 'x'。”

最佳答案

看起来您正在尝试迭代一个比现有数组更长的数组,因此您正在尝试在未定义的数组索引上设置 x

这里,迭代尝试遍历(array.length - 1) * 2,这几乎是数组长度的两倍:

    for (let i = 0; i < (concordiaLogo.length-1) * 2; i += 2) {
      let newEntry = { x: 0, y: 0 };
      newEntry.x = (concordiaLogo[i].x + concordiaLogo[i+1].x)/2;
      newEntry.y = (concordiaLogo[i].y + concordiaLogo[i+1].y)/2;
      concordiaLogo.splice(i + 1, 0, newEntry);
    }

当您遇到大于数组长度的索引时,concordiaLoco[i] 未定义,因此您无法访问其上的x

关于javascript - JavaScript 中的数组错误 : Uncaught TypeError: Cannot read property 'x' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56517395/

相关文章:

Java - 如何在for循环中修改数组并在for循环退出后记住它?

javascript - 在 Node js 中创建 JSON 数组

javascript - 使用 Javascript 从文档中选择 HTML

c - 指向现有数组而不是副本的指针

javascript - 从另一个数组访问 JSON 数组项

c# - 将文本文件二维数组转换为整数二维数组

c - Arduino : multiplexer code not entering for loop

javascript - JSlint - 在 for 循环内创建函数与评估函数

javascript - jQuery 对话框不关闭

javascript - 如何使用 jQuery 基于选择器模式_pairs_应用多个语句?