You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中for循环访问对象数组键值报Cannot read property 'x' of undefined错误

错误原因
  • JavaScript数组的索引从0开始,合法索引范围为0到objects.length - 1。你代码中的循环条件写为i <= objects.length,当i等于objects.length时,objects[i]的值为undefined,尝试读取undefined的x属性就会触发TypeError: Cannot read property 'x' of undefined报错。
    比如你给出的示例数组长度为5,合法索引只有0、1、2、3、4,当i自增到5时就会触发越界访问。
修复方案

方案1:修正循环判断条件

将循环条件中的<=改为<即可解决下标越界问题:

function getCount(objects) {
    let counter = 0;
    for(let i = 0; i < objects.length; i++) {
      if (objects[i]['x'] == objects[i]['y']) {
          counter ++;
      }
    }
    return counter;
}

运行该函数处理你的示例数组,返回结果为2,符合预期。

方案2:用数组遍历方法避免手动维护下标

你也可以使用reduce、filter等数组原生方法,不需要手动控制下标,从根源上避免越界问题:

// reduce 实现版本
function getCount(objects) {
  return objects.reduce((count, cur) => cur.x === cur.y ? count + 1 : count, 0)
}

// filter 实现版本
function getCount(objects) {
  return objects.filter(item => item.x === item.y).length
}

内容的提问来源于stack exchange,提问作者Pratham Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 07:54:01