簡體   English   中英

遍歷JavaScript中的JSON對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM