我有一个JSON feed,我需要从其中提取一些信息以在地图上绘制一些标记。为此,我需要遍历JSON feed,然后遍历数组中的特定对象。
我可以让它遍历顶层(类别),但是尝试遍历每个类别都可以按预期方式工作-我得到的相同类别重复了等于数字类别。
数组/对象的结构如下:
- activities
|_ category
|_ acf
|_ activity_listing
|_ name
|_ latitude
|_ longitude
|_ name
|_ latitude
|_ longitude
|_ category
|_ acf
|_ activity_listing
|_ name
|_ latitude
|_ longitude
|_ name
|_ latitude
|_ longitude
每个类别都有一个活动列表,其中包含多个项目(名称,经度,长度)。
我的代码设置如下:
var activitiesLocationList = this.activitiesLocations;
for (var i = 0; i < activitiesLocationList.length; i++) {
activitiesLocationList[0]['acf']['activity_listing'].forEach(function(item) {
var placeName = item['activity_listing-name'];
var placeLatitude = parseFloat(item['activity-listing_latitude']);
var placeLongitude = parseFloat(item['activity-listing_longitude']);
console.log('Place Name: ' + placeName);
})
}
输出为:
'Place Name: Karijini National Park'
'Place Name: Staircase to the Moon'
'Place Name: Millstream Chichester National Park'
'Place Name: Dampier Archipelago'
'Place Name: Murujuga National Park'
'Place Name: Montebello Islands'
'Place Name: Karijini National Park'
'Place Name: Staircase to the Moon'
'Place Name: Millstream Chichester National Park'
'Place Name: Dampier Archipelago'
'Place Name: Murujuga National Park'
'Place Name: Montebello Islands'
所以它几乎可以满足我的要求,但是只进入了第一类。我在做什么错了?
如何让它逐步遍历每个类别,使内容不断循环播放?
答案 0 :(得分:1)
在此行i
中循环时,您必须传递索引0
而不是activitiesLocationList[i]['acf']['activity_listing']....
答案 1 :(得分:1)
仅当您遍历对象时,您实际上才访问第0个索引。将activitiesLocationList[0]['acf']['activity_listing']
替换为activitiesLocationList[i]['acf']['activity_listing']
。因此,您的完整代码将如下所示
var activitiesLocationList = this.activitiesLocations;
for (var i = 0; i < activitiesLocationList.length; i++) {
activitiesLocationList[i]['acf']['activity_listing'].forEach(function(item) {
var placeName = item['activity_listing-name'];
var placeLatitude = parseFloat(item['activity-listing_latitude']);
var placeLongitude = parseFloat(item['activity-listing_longitude']);
console.log('Place Name: ' + placeName);
})
}
答案 2 :(得分:1)
我认为由于代码activitiesLocationList[0]
的这一部分,您将始终获得第一个对象。
可以将其更改为activitiesLocationList[i]
以获取每个对象数据,然后就可以了。
答案 3 :(得分:1)
使用activityLocationList [i]而不是activityLocationList [0]:
for (var i = 0; i < activitiesLocationList.length; i++) {
activitiesLocationList[0]['acf']['activity_listing'].forEach(function(item) {
var placeName = item['activity_listing-name'];
var placeLatitude = parseFloat(item['activity-listing_latitude']);
var placeLongitude = parseFloat(item['activity-listing_longitude']);
console.log('Place Name: ' + placeName);
})
}