【问题标题】:Map/Link array item to key of another Object将数组项映射/链接到另一个对象的键
【发布时间】:2021-12-06 03:50:54
【问题描述】:

我正在尝试使用以下代码生成报告页面。问题是,我无法从 objItems[i] 对象中选择 listTDRender[k] 等效数组值。我收到“Uncaught TypeError: Cannot read properties of undefined (reading '0')”错误。

当前工作流程 第 1 步 - 获取配置(生成列表数组)和拆分值

function loadReport() {
    for (var j = 0; j < list.length; j++) {
        const listVal = list[j].split(",");
        const listFieldRender = listVal[2].replaceAll('|',',');
        var listTDRender = listVal[2].split("|");                       
        $.ajax({
            async: false,
            url: "SPO/_api/web/lists/getbytitle('" + listVal[0] + "')/items?$select=Created,EncodedAbsUrl,"+ listFieldRender +"&$top=2&$orderby=Created%20desc",
            type: "GET", headers: {"accept": "application / json;odata = verbose"},
            success: function(data) {
                var objItems = data.d.results;
                var tableContent = '<table id="' + listVal[1] + '" style="width:100%;"><caption class="text-info">' + listVal[1] + '</caption>';
                for (var i = 0; i < objItems.length; i++) {
                     tableContent += '<tr>';
                        for (var k = 0; k < listTDRender.length; k++) {
                            tableContent += '<td>' + objItems[i].listTDRender[k] + '</td>';
                        }
                     tableContent += '</tr>';
                }
               $('#renderReport').append(tableContent);
            },
            error: function(error) {
                alert(JSON.stringify(error));
            }
        });
    }
}

下面的示例数据

list
[
    "ABC,ABC Report,DistrDate|Rev|Owner",
    "DEF,DEF Report,DistrDate|Rev|Owner",
    "GHI,GHI Report,DistrDate|Owner",
    "JKL,JKL Report,distrDate|Owner"
]

listTDRender
[
    "DistrDate",
    "Rev",
    "Owner"
]

objItems
{
    "d": {
        "results": [
            {
                "DistrDate": "2021-10-19T03:03:00Z",
                "Rev": 0,
                "Owner": "ABC",
                "Created": "2021-10-19T03:03:00Z",
                "EncodedAbsUrl": "URL"
            },
            {
                "DistrDate": "2021-10-18T03:02:49Z",
                "Rev": 0,
                "Owner": "ABC",
                "Created": "2021-10-18T03:02:49Z",
                "EncodedAbsUrl": "URL"
            }
        ]
    }
}

【问题讨论】:

  • async: false 已弃用,不应再使用。
  • 试试objItems[i][listTDRender[k]]。没有为 objItems 中的对象定义属性 listTDRender

标签: javascript jquery arrays json object


【解决方案1】:

必须是objItems[i][listTDRender[k]],而不是objItems[i].listTDRender[k]

您不想访问名为listTDRender 的属性,而是访问名称等于listTDRender[k] 内容的属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    • 2022-12-19
    • 2013-07-22
    • 1970-01-01
    • 2019-10-07
    • 2021-07-07
    • 1970-01-01
    相关资源
    最近更新 更多