我有嵌套JSON对象形式的数据。我想抓取一些数据来创建一个表,但它深深地嵌套在数组和对象中。我的餐桌最好的办法是什么?
如果我想抓住球队的名字,华盛顿国民队和迈阿密马林鱼队,我该如何引用这些属性?我正在使用Angular 1和ng repeat来迭代。
这是一个更长的json对象的第一部分的例子:
CMTime fragmentInterval = kCMTimeInvalid;
[aMovieFileOutput setMovieFragmentInterval:fragmentInterval];
[aMovieFileOutput startRecordingToOutputFileURL:[NSURL fileURLWithPath: [tempFileName stringByAppendingPathExtension:@"mov"]] recordingDelegate:self];
谢谢你!
答案 0 :(得分:0)
使用Array map()
功能:
var res = obj.sports[0].leagues[0].events[0].competitions[0].competitors.map(function(item) {
return item.team.location+ " " +item.team.name;
});
console.log(res);
使用for in
循环:
var resArray = [];
for (var i in obj.sports[0].leagues[0].events[0].competitions[0].competitors) {
resArray.push(obj.sports[0].leagues[0].events[0].competitions[0].competitors[i].team.location+ " " +obj.sports[0].leagues[0].events[0].competitions[0].competitors[i].team.name);
}
console.log(resArray);
工作演示:
var obj = {
"sports": [
{
"name": "baseball",
"id": 1,
"uid": "s:1",
"leagues": [
{
"name": "Major League Baseball",
"abbreviation": "mlb",
"id": 10,
"uid": "s:1~l:10",
"groupId": 9,
"shortName": "MLB",
"events": [
{
"id": 350506120,
"uid": "s:1~l:10~e:350506120",
"date": "2015-05-06T17:05:00Z",
"season": {
"year": 2015,
"type": 2,
"description": "regular",
"startDate": "2015-04-05T07:00:00Z",
"endDate": "2015-10-05T06:59:59Z"
},
"timeValid": true,
"competitions": [
{
"id": 350506120,
"uid": "s:1~l:10~c:350506120",
"date": "2015-05-06T17:05:00Z",
"timeValid": true,
"competitors": [
{
"type": "team",
"score": 7,
"homeAway": "home",
"isWinner": true,
"team": {
"id": 20,
"uid": "s:1~l:10~t:20",
"location": "Washington",
"name": "Nationals",
"nickname": "Washington",
"abbreviation": "WSH",
"color": "0a295d",
"links": {
"api": {
"teams": {
"href": "http://api-partners.espn.com/v1/sports/baseball/mlb/teams/20"
}
}
},
"record": {
"summary": "14-15",
"wins": 14,
"losses": 15,
"overtimeLosses": 1,
"ties": 0
}
}
},
{
"type": "team",
"score": 5,
"homeAway": "away",
"isWinner": false,
"team": {
"id": 28,
"uid": "s:1~l:10~t:28",
"location": "Miami",
"name": "Marlins",
"nickname": "Miami",
"abbreviation": "MIA",
"color": "0081c7",
"links": {
"api": {
"teams": {
"href": "http://api-partners.espn.com/v1/sports/baseball/mlb/teams/28"
}
}
}
}
}
]
}
]
}
]
}
]
}
]
};
var resArray = [];
for (var i in obj.sports[0].leagues[0].events[0].competitions[0].competitors) {
resArray.push(obj.sports[0].leagues[0].events[0].competitions[0].competitors[i].team.location+ " " +obj.sports[0].leagues[0].events[0].competitions[0].competitors[i].team.name);
}
console.log(resArray);