在JavaScript中循环遍历JSON对象

问题描述 投票:0回答:3

我的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
javascript php arrays json getjson
3个回答
0
投票

使用jQuery,

$.each(pioData, function(i, v) {
        v.latitude = parseFloat(v.latitude);
        ...
        ...
        ...

});

因为从本质上讲,您对对象数组所做的是改变每个属性的值类型。完成迭代后,您可以再次使用pioData,根据您的需要进行修改。


0
投票

你可以试试这个经典的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

0
投票

如果您希望迭代返回并格式化对象,可以执行以下操作:

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对象的新属性。

© www.soinside.com 2019 - 2024. All rights reserved.