是var flightPlanCoordinates = [{lat:37.772,lng:-122.214},{lat:21.291,lng:-157.821}];数组还是对象?

时间:2018-10-20 16:39:28

标签: javascript

我读过一些论坛,内容如下,

var foo = ["a", "b"];//is an array
var foo = {'name':'myname', 'age':'4'};//is an object

都在javascript中。但是当花括号在另一个里面时会发生什么呢?如下所示。

var flightPlanCoordinates = [
      {lat: 37.772, lng: -122.214},
      {lat: 21.291, lng: -157.821},
      {lat: -18.142, lng: 178.431},
      {lat: -27.467, lng: 153.027}
    ];//is this a 2-d array?

确定这一点可能有助于我解决为何无法使用json数据并在地图上绘制折线的问题。

3 个答案:

答案 0 :(得分:1)

将数组视为一种存储。那家商店可以存放各种各样的东西。在您的示例中 var foo = ["a", "b"]是一个字符串数组,因为foo数组的元素是字符串。您可以使用迭代器(循环等)或直接使用索引来访问它们。

foo[0] // "a" foo[1] // "b" foo[2] // undefined

由于您知道{name: "John Doe", age: 40}是一个对象,所以flightPlanCoordinates是一个对象数组。您可以使用迭代器或手动访问该数组的元素。

flightPlanCoordinates[0].lat // 37.772

数组甚至可以容纳其他数组。哇

答案 1 :(得分:0)

这看起来像一个对象数组。您可以使用flightPlanCoordinates.forEachfor循环来访问它。例如,可以像这样flightPlanCoordinates[0].latflightPlanCoordinates[0].lng

来访问第一个元素。

答案 2 :(得分:0)

假设您有以下foobarflightPlanCoordinates

var foo = ["a", "b"];
var bar = {'name':'myname', 'age':'4'};
var flightPlanCoordinates = [
      {lat: 37.772, lng: -122.214},
      {lat: 21.291, lng: -157.821},
      {lat: -18.142, lng: 178.431},
      {lat: -27.467, lng: 153.027}
    ];

让我们从这里开始

数组是对象的一种特殊类型,因此如果使用typeof可能会感到困惑。

console.log(typeof foo); // object
console.log(typeof bar); // object
console.log(typeof flightPlanCoordinates); // object

但是不用担心,这是您如何知道某物是否为数组的地方:

Array.isArray(foo); //returns true
Array.isArray(bar); //returns false
Array.isArray(flightPlanCoordinates); //returns true

这是遍历数组的方式

foo.map((x)=>{
    console.log(x); //do something with the items in an array
});


flightPlanCoordinates.map((x)=>{
    console.log(`Latitude : ${x.lat} , Longitude : x.lng `); 
    //do something with the items in an array
});

供参考:

this article讨论数组。

this article讨论Array.isArray()方法。

this article讨论了.map()方法。

希望我能帮助您,谢谢。