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

JavaScript如何在主数组内使用子数组并修复Cannot read property报错

问题原因

出现Cannot read property 'property' of undefined报错有两个核心问题:

  • 你在给Object[id]赋值的对象字面量中,直接调用了还未完成初始化的Object[id].property,此时Object[id]还没被创建完成,取值自然为undefined
  • 代码执行顺序错误:你先给name赋值、再往property数组里push数据,就算不报错,此时property也是空数组,也拿不到你想要的第一个元素值

修正方案

调整代码执行顺序,先完成property数组的数据写入,再给name赋值即可,同时注意不要用JS内置构造函数名Object作为自定义存储对象的变量名,会覆盖全局内置方法引发其他异常:

// 替换原被占用的Object变量名,改为自定义存储对象
const dataMap = {};
function generateObject(id, Samplelist) {
  // 第一步初始化对象,先不赋值name
  dataMap[id] = {
    property: []
  };

  // 第二步遍历把数据push到property数组
  Samplelist.forEach((list, i) => {
    dataMap[id].property.push({
      type: types[order[i]],
      quality: qual[fileToMap],
    });
  });

  // 第三步property已经有数据后,再给name赋值
  dataMap[id].name = dataMap[id].property[0];
  // 可选兼容逻辑:如果Samplelist可能为空,加兜底默认值
  // dataMap[id].name = dataMap[id].property[0] ?? '默认名称';
}

内容的提问来源于stack exchange,提问作者Felix Atlas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:57:03