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

如何用JavaScript遍历JSON数组并灵活生成可复用表格行

通用JSON数组转表格行方案

问题场景

现有不同结构的JSON数组,需要循环生成表格行,但原方法硬编码属性名,无法复用:

示例数据1:

var data = [
   {foo1:"a",foo2:"b",foo3:"c"},
   {foo1:"d",foo2:"e",foo3:"f"},
   {foo1:"g",foo2:"h",foo3:"i"}
]

原无法复用的实现:

$.each(data, function (key, value) {
    rows += "<tr id=" + key + "><td>" + value.foo1+ "</td><td>" + value.foo2+ "</td><td>" + value.foo3+    "</td></tr>";
});

需要适配的其他结构JSON数组:

var dataNew = [
   {lorem1:"j",lorem2:"k",lorem3:"l"},
   {lorem1:"m",lorem2:"n",lorem3:"o"},
   {lorem1:"p",lorem2:"q",lorem3:"r"},
   {lorem1:"x",lorem2:"s",lorem3:"t"},
   {lorem1:"w",lorem2:"y",lorem3:"z"}
]

通用解决方案

核心逻辑是动态遍历对象属性,不再硬编码属性名,适配任意结构的JSON数组。

方法1:原生JavaScript实现

function generateTableRows(data) {
    let rows = '';
    if (!data || data.length === 0) return rows;
    
    data.forEach((item, index) => {
        let cells = '';
        // 遍历当前对象的所有属性值,生成单元格
        Object.values(item).forEach(value => {
            cells += `<td>${value}</td>`;
        });
        rows += `<tr id="${index}">${cells}</tr>`;
    });
    return rows;
}

// 使用示例
const rows1 = generateTableRows(data);
const rows2 = generateTableRows(dataNew);

方法2:jQuery兼容版本

function generateTableRows(data) {
    let rows = '';
    if (!data || data.length === 0) return rows;
    
    $.each(data, function(key, value) {
        let cells = '';
        // 遍历对象属性值生成单元格
        $.each(value, function(_, cellValue) {
            cells += `<td>${cellValue}</td>`;
        });
        rows += `<tr id="${key}">${cells}</tr>`;
    });
    return rows;
}

// 使用示例
const rows1 = generateTableRows(data);
const rows2 = generateTableRows(dataNew);

进阶优化:自定义列顺序

如果需要指定表格列的展示顺序,可扩展函数传入属性列表:

function generateTableRows(data, propOrder) {
    let rows = '';
    if (!data || data.length === 0) return rows;
    
    // 优先使用传入的属性顺序,默认取第一个对象的属性
    const props = propOrder || Object.keys(data[0]);
    
    data.forEach((item, index) => {
        let cells = '';
        props.forEach(prop => {
            // 处理属性不存在的情况,默认显示空字符串
            cells += `<td>${item[prop] || ''}</td>`;
        });
        rows += `<tr id="${index}">${cells}</tr>`;
    });
    return rows;
}

// 使用示例:指定列顺序为lorem3 -> lorem1 -> lorem2
const customRows = generateTableRows(dataNew, ['lorem3', 'lorem1', 'lorem2']);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:45:43