想请大家帮忙看看这个双重循环添加内容要怎么写?

for(let i in data_projects) {

                for(let j in data_projects[i].project_img){

                    data_projects_str += [
                        '<div class="picking_info picking_info_name">',
                        '<p>项目名称</p>',
                        '<p class="picking_user_name">'+data_projects[i].project_name+'</p>',
                        '</div>',
                        '<div class="picking_info picking_info_name" style="flex-direction: column;">',
                        '<p>图片信息</p>',
                        '<div class="img_list img_list_2">',
                        '<ul style="padding-bottom: 0px;">',
                        //图片这里又是一个循环,data_projects[i].project_img
                        '<li><img src=""></li>',
                        '</ul>',
                        '</div>',
                        '</div>'
                    ].join ('');
                }

                
            }
            $('.service_items').empty()
            $('.service_items').append(data_projects_str)

data_projects这是一个循环数组,里面还有个字段project_img 里面是每个数组的图片数组,我有点不知道怎么写了,这种双重循环 添加数据的

阅读 2.2k
4 个回答

两层遍历就整不会了?

var data_projects_str = data_projects.map(v => `
    <div class="picking_info picking_info_name">
        <p>项目名称</p>
        <p class="picking_user_name">${v.project_name}</p>
    </div>
    <div class="picking_info picking_info_name" style="flex-direction: column;">
        <p>图片信息</p>
        <div class="img_list img_list_2">
            <ul style="padding-bottom: 0px;">
                ${v.project_img.map(url => `<li><img src="${url}"></li>`).join('')}
            </ul>
        </div>
    </div>
`).join('')
$(".service_items").empty();
$(".service_items").append(
    data_projects.reduce(
        (html, item) =>
            (html += `
        <div class="picking_info picking_info_name">
            <p>项目名称</p>
            <p class="picking_user_name">${item.project_name}</p>
        </div>
        <div class="picking_info picking_info_name" style="flex-direction: column;">
            <p>图片信息</p>
            <div class="img_list img_list_2">
                <ul style="padding-bottom: 0px;">
                    ${item.project_img.reduce((html2, url) => (html2 += `<li><img src="${url}"></li>`), "")}
                </ul>
            </div>
        </div>
    `),
        ""
    )
);

按题主的逻辑,应该是想这样

// 在循环开始之前,清空要填的区域(容器)
$(".service_items").empty();

for (let i in data_projects) {
    // 每个 project 的 data_projects_str 都应该是从没人内容开始,所以这里要初始化
    let data_projects_str = "";

    // 循环拼接 data_projects_str
    for (let j in data_projects[i].project_img) {
        data_projects_str += "...";
    }

    // 每个 project 拼接完成之后,加到容器里
    $(".service_items").append(data_projects_str);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题