javascript - 使用角度和打字稿获取对象值数组
问题描述
我正在尝试使用嵌套的 for 循环将对象值数组放入数组中。我得到如下的 json 数据。为此,我编写了如下的打字稿代码。但我无法获得所需的结果以将值绑定到模板。请参阅下面我的代码。
这是我的打字稿代码:
let totalData = results['data'];
for (var i=0; i<totalData.length; i++)
for (var task in totalData[i]) {
console.log("Task: "+task);
console.log("totalTests: "+task['totalTestCompleted']);
console.log("totalOpenIssues: "+totalData[i][task].totalOpenIssues);
}
以下是我从其余 api 获得的 json 数据。
[
{
"id":"8a8080f06610359c0166103cf22c7032",
"createdDate":"2018-09-25T10:18:41.580+0000",
"inactive":false,
"job":{
"id":"8a80809465ebb03f0165ebf9a780009b",
"createdDate":"2018-09-18T09:18:51.775+0000",
"inactive":false,
"project":{
"id":"8a8080a565e5c6f90165e5dc7d950089",
"createdDate":"2018-09-17T04:49:17.205+0000",
"inactive":false,
"name":"testproject917",
"org":{
"id":"8a8080cf65e02c0f0165e031fb9e0003",
"createdBy":"anonymousUser",
"createdDate":"2018-09-16T02:24:56.734+0000",
"inactive":false,
"name":"Google"
}
},
"name":"prod",
"refId":"prod",
"description":null,
"environment":{
"id":"8a80809465ebb03f0165ebf9a779009a",
"createdDate":"2018-09-18T09:18:51.769+0000",
"inactive":false,
"baseUrl":" http://www.google.com",
"auths":[
{
"name":"prodenv",
"authType":"Basic",
"username":"Google//admin@google.io",
"password":"4+Coma/w5kOSlofdJLeBT6b4tdGNrVbE"
}
]
},
"issueTracker":{
"id":"8a80809465ebb03f0165ebf9a780009c",
"name":"Dev-IssueTracker"
},
"notifications":[
{
"id":12,
"name":"Dev-Email-Notification"
},
{
"id":null,
"name":"Default_Slack"
}
],
"categories":"",
"notificationToDo":false,
"issueTrackerToDo":false,
"openIssues":0,
"closedIssues":0
},
"runId":9,
"task":{
"name":"Tue Sep 25 10:18:41 UTC 2018",
"description":"Invalid Region: US_WEST_1",
"status":"FAIL",
"totalTests":0,
"totalOpenIssues":0
},
"attributes":{
"REGION":"US_WEST_1"
},
"regions":"US_WEST_1",
"stats":{
},
"validations":null,
"ciCdStatus":"FAIL:Invalid Region: US_WEST_1FAIL:0.0:0:0:"
},
{}
]
我正在尝试获取任务对象的键和值,如下所示
task.totalTests
task.totalOpenIssues
当我试图获取对象值的 json 数组时,我收到了这个错误:
ERROR TypeError: Cannot read property 'totalTestCompleted' of null
所以我的想法是将这些值绑定到模板。为此,我已经编写了所有内容,但我无法获取 json 对象值的数组。谁可以帮我这个事?
谢谢。
解决方案
你的代码有一些问题。根据您显示的数据,您不需要嵌套循环。此外,您的数据中没有任何totalTestCompleted
密钥。
let totalData = results['data'];
for (var i=0; i<totalData.length; i++) {
// totalTestCompleted doesn't exist: console.log("totalTests: "+task.totalTestCompleted);
console.log("totalOpenIssues: "+ totalData[i].task.totalOpenIssues);
}
推荐阅读
- java - 从firebase android查询项目后,我无法将项目添加到HashMap
- asp.net-core - 无法将对象列表发布到 Web api
- javascript - 我如何使用 jquery 的 .append 仅附加文本而不转换为 html
- html - 如何在 MVC 5 View 的 html 表格标题中减少文本上方和下方的空间
- css - 无法使用 CSS 删除 Sharepoint Web 中工具栏上的按钮
- arrays - JSONata - 基于共享值删除数组中的重复对象
- android - 为什么 Navigation Drawer 项目模板 (Studio 3.6.1) 不能在 Android Nougat 上加载正确的控制器?
- c++ - 添加新数据时如何保留文件中的旧数据
- python - 在 train_test_split 返回的数据上,熊猫“不再支持将列表喜欢传递给带有任何缺失标签的 .loc 或 []”
- java - Selenium - Java - 页面工厂:从属性文件中读取并在 Selenium 中传递值(SendKeys)