将数组项映射/链接到另一个对象的键
Posted
技术标签:
【中文标题】将数组项映射/链接到另一个对象的键【英文标题】: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
。
【参考方案1】:
必须是objItems[i][listTDRender[k]]
,而不是objItems[i].listTDRender[k]
。
您不想访问名为listTDRender
的属性,而是访问名称等于listTDRender[k]
内容的属性。
【讨论】:
以上是关于将数组项映射/链接到另一个对象的键的主要内容,如果未能解决你的问题,请参考以下文章
如何在 TypeScript Angular 2 中将 Json 对象数组映射到另一个普通 json 对象
我如何将一次出现的所有项目过滤到一个列表中,并将多次出现的所有项目过滤到另一个列表中?