如何遍历javascript数组/对象

时间:2015-03-09 04:19:59

标签: javascript

我很难从这个数组中获取数据。有人可以告诉我怎么做吗?

我需要从latLng中获取AdminArea4locations以获取自动填充功能。

有人可以解释{}[]之间的区别。据我所知,一个是数组,另一个是对象,但我不确定这是不对的。该过程是否与遍历数组而不是对象不同?

{
   "results": [
      {
         "locations": [
            {
               "latLng": {
                  "lng": 24.873108,
                  "lat": 59.389755
               },
               "adminArea4": "Harju maakond",
               "adminArea5Type": "City",
               "adminArea4Type": "County",
               "adminArea5": "Rae vald",
               "street": "",
               "adminArea1": "EE",
               "adminArea3": "",
               "type": "s",
               "displayLatLng": {
                  "lng": 24.873108,
                  "lat": 59.389755
               },
               "linkId": 0,
               "postalCode": "",
               "sideOfStreet": "N",
               "dragPoint": false,
               "adminArea1Type": "Country",
               "geocodeQuality": "CITY",
               "geocodeQualityCode": "A5XXX",
               "adminArea3Type": "State"
            },
            {
               "latLng": {
                  "lng": 24.860184,
                  "lat": 59.38493
               },
               "adminArea4": "Harju maakond",
               "adminArea5Type": "City",
               "adminArea4Type": "County",
               "adminArea5": "Rae",
               "street": "",
               "adminArea1": "EE",
               "adminArea3": "",
               "type": "s",
               "displayLatLng": {
                  "lng": 24.860184,
                  "lat": 59.38493
               },
               "linkId": 0,
               "postalCode": "",
               "sideOfStreet": "N",
               "dragPoint": false,
               "adminArea1Type": "Country",
               "geocodeQuality": "CITY",
               "geocodeQualityCode": "A5XXX",
               "adminArea3Type": "State"
            },
         ]
      }
   ]
}

2 个答案:

答案 0 :(得分:2)

首先对阵列和对象进行了一些解释,因为您已经提出过,并且它与如何使用您拥有的数据结构非常相关:

{}定义了一个对象。 []定义了一个数组。

对象是属性/值对的无序列表,没有重复属性名称。

数组是具有.length属性的单个项的有序列表,用于告诉您数组中有多少项。


对象的定义如下:

var obj = {
   prop1: value1,
   prop2: value2
};

并且,您可以引用这样的值:

console.log(obj.prop1);    // value1

数组的定义如下:

var myArray = ["one", "two", "three"];

并且,您可以通过基于零的索引访问元素,如下所示:

console.log(myArray[0]);   // "one"

或者,您可以像这样迭代数组中的所有项:

for (var i = 0; i < myArray.length; i++) {
    console.log(myArray[i]);
}

假设您的整体数据结构位于名为data的变量中,您可以像这样迭代结果和嵌套位置数组:

var results = data.results;
var locations;
for (var j = 0; j < results.length; j++) {
    locations = results[j].locations;
    for (var i = 0; i < locations.length; i++) {
       console.log(locations[i].latLng);
       console.log(locations[i].adminArea4);
    }

解释:

  1. data.results是您需要迭代的数组。
  2. 在该数组的每个元素中都有一个包含位置属性的对象。
  3. locations属性是您需要迭代的另一个数组。
  4. 在locations数组的每个元素中都有一个latLng属性和adminArea4属性的对象。

答案 1 :(得分:1)

它的json结构..您可以访问我在下面提到的元素。将json分配给变量然后访问对象属性。

var obj = {
   "results": [
      {
         "locations": [
            {
               "latLng": {
                  "lng": 24.873108,
                  "lat": 59.389755
               },
               "adminArea4": "Harju maakond",
               "adminArea5Type": "City",
               "adminArea4Type": "County",
               "adminArea5": "Rae vald",
               "street": "",
               "adminArea1": "EE",
               "adminArea3": "",
               "type": "s",
               "displayLatLng": {
                  "lng": 24.873108,
                  "lat": 59.389755
               },
               "linkId": 0,
               "postalCode": "",
               "sideOfStreet": "N",
               "dragPoint": false,
               "adminArea1Type": "Country",
               "geocodeQuality": "CITY",
               "geocodeQualityCode": "A5XXX",
               "adminArea3Type": "State"
            },
            {
               "latLng": {
                  "lng": 24.860184,
                  "lat": 59.38493
               },
               "adminArea4": "Harju maakond",
               "adminArea5Type": "City",
               "adminArea4Type": "County",
               "adminArea5": "Rae",
               "street": "",
               "adminArea1": "EE",
               "adminArea3": "",
               "type": "s",
               "displayLatLng": {
                  "lng": 24.860184,
                  "lat": 59.38493
               },
               "linkId": 0,
               "postalCode": "",
               "sideOfStreet": "N",
               "dragPoint": false,
               "adminArea1Type": "Country",
               "geocodeQuality": "CITY",
               "geocodeQualityCode": "A5XXX",
               "adminArea3Type": "State"
            },
         ]
      }
   ]
};
  

Travsering Values

obj.results[0].locations[0].latLng.lng
obj.results[0].locations[0].latLng.lat

您也可以使用for循环遍历。