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

JavaScript循环两个对象数组时data变量返回undefined问题排查

问题排查与修复方案

核心错误原因

  • 异步请求时序问题:$.get是异步操作,你调用load()时请求还未完成,DB仍是空数组,所以DB[index]返回undefined。
  • 数据存储错误:接口返回的是数组格式,你用DB.push(res)会把整个数组作为单个元素存入DB,导致DB变成[ [ {...}, {...} ] ],即使请求完成,DB[index]也取不到正确数据。
  • HTML标签语法错误:<h4 u-text-${classNum[index].text}">缺少class=属性前缀,既会导致样式失效,也存在语法错误。

修复后的完整代码

HTML部分(无需修改)

<div id="recently-added" class="u-repeater">
<!-- here to load multiple cards -->
</div>

JavaScript部分

var DB = [];

// 将load()放在异步请求回调内,确保数据获取完成后再执行渲染
$.get(`http://localhost:8080/real-estate/monthly`, function(res) {
    // 直接赋值而非push,匹配接口返回的数组格式
    DB = res;
    load();
}) 

function load() {
    var card = '';
    var classNum = [
        { 'list': '1', 'text': '2'},
        { 'list': '2', 'text': '5'}
    ];
    for (let index = 0; index < classNum.length; index++) {
         var data = DB[index];
         // 修复h4标签的class属性语法错误
         card += 
            `
             <div class="u-list-item-${classNum[index].list}">
              <div class="u-container-layout-${classNum[index].list}">
              <img class="u-image-${classNum[index].list}">
              <p class="u-text">Click to select the text box</p>
              <h4 class="u-text-${classNum[index].text}">${data.title}</h4>
              <a class="u-btn-${classNum[index].list}">detail</a>
              </div>
            </div>
           `    
        }
    $("#recently-added").html(card);
}

额外优化建议

  • 增加数据校验,避免数组长度不匹配导致的错误:
function load() {
    if (DB.length !== classNum.length) {
        console.warn('数据数组与样式配置数组长度不匹配');
        return;
    }
    // 后续渲染代码...
}
  • 使用forEach遍历简化代码:
classNum.forEach((item, index) => {
    const data = DB[index];
    card += `
        <div class="u-list-item-${item.list}">
            <div class="u-container-layout-${item.list}">
            <img class="u-image-${item.list}">
            <p class="u-text">Click to select the text box</p>
            <h4 class="u-text-${item.text}">${data.title}</h4>
            <a class="u-btn-${item.list}">detail</a>
            </div>
        </div>
    `;
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:00:55