[英]Loop through JSON objects in JavaScript
我的JavaScript代碼中具有這樣的JSON結構
[{"id":10,"latitude":"49","longitude":"2","altitude":"construction","name":"sjiajnjdksaa","description":"jfis","urlidle":"asd","urlselected":"asd"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"}]
這是從$.getJSON(serverUrl, function(data)
方法獲得的,如下所示。
var serverUrl = https://demo.blah.fgh/return.php?lat=20;
var jqxhr = $.getJSON(serverUrl, function(data) {
console.log(jqxhr.responseText);
但是,我需要遍歷它們中的每一個並將每一行放入一個對象,如下所示
//Loop Starts
var singlePoi = {
"id": poiData[i].id,
"latitude": parseFloat(poiData[i].latitude),
"longitude": parseFloat(poiData[i].longitude),
"altitude": parseFloat(poiData[i].altitude),
"title": poiData[i].name,
"description": poiData[i].description,
"urlidle": poiData[i].urlidle,
"urlselected": poiData[i].urlselected
};
// Now do operations with singlePoi
//Loop ends
使用jQuery,
$.each(pioData, function(i, v) {
v.latitude = parseFloat(v.latitude);
...
...
...
});
因為從本質上講,您對對象數組所做的就是更改每個屬性的值類型。 完成迭代后,您可以再次使用pioData
,並根據需要進行修改。
您可以嘗試以下經典javascript forEach
讓你的Json結構是
var data=[{"id":10,"latitude":"49","longitude":"2","altitude":"construction","name":"sjiajnjdksaa","description":"jfis","urlidle":"asd","urlselected":"asd"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"},
{"id":10,"latitude":"22","longitude":"10","altitude":"asd","name":"zxcvbnmmmkk","description":"kk","urlidle":"qwerty","urlselected":"qwerty"}];
//Loop Starts
data.forEach(function(poiData){
var singlePoi = {
"id": poiData.id,
"latitude": parseFloat(poiData.latitude),
"longitude": parseFloat(poiData.longitude),
"altitude": parseFloat(poiData.altitude),
"title": poiData.name,
"description": poiData.description,
"urlidle": poiData.urlidle,
"urlselected": poiData.urlselected
};
// Now do operations with singlePoi
});
//Loop ends
如果您要遍歷返回值並格式化對象,則可以執行以下操作:
function formatReturn(data) {
var formattedData = [];
data.forEach( function(poiData) {
formattedData.push(
{
"id": poiData.id,
"latitude": parseFloat(poiData.latitude),
"longitude": parseFloat(poiData.longitude),
"altitude": parseFloat(poiData.altitude),
"title": poiData.name,
"description": poiData.description,
"urlidle": poiData.urlidle,
"urlselected": poiData.urlselected
}
);
});
console.log(formattedData);
}
請注意,在這種情況下,您仍將具有對象數組,但是緯度,經度和高度屬性將應用parseFloat。
如果希望將所有行作為屬性存儲在對象中,則可以執行以下操作:
function formatReturn(data) {
var formattedData = {};
data.forEach( function(poiData,index) {
formattedData["singlePoi_"+index] =
{
"id": poiData.id,
"latitude": parseFloat(poiData.latitude),
"longitude": parseFloat(poiData.longitude),
"altitude": parseFloat(poiData.altitude),
"title": poiData.name,
"description": poiData.description,
"urlidle": poiData.urlidle,
"urlselected": poiData.urlselected
};
}
console.log(formattedData);
}
上面的代碼會將每一項存儲在JSON返回中,作為formattedData對象的新屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.