Javascript:如何访问动态命名的嵌套对象中的键?

时间:2016-10-26 17:16:04

标签: javascript arrays object key

这是我的情况:我正在使用一个包含一堆嵌套对象的数组。其中一个嵌套对象的名称会动态更改。如何始终如一地访问其中一个子对象的键?

以下是它可以拥有的路径的几个例子:

kml[id].overlayData._layers.136._bounds._northEast.lat
kml[id].overlayData._layers.143._bounds._northEast.lat
kml[id].overlayData._layers.82._bounds._northEast.lat
kml[id].overlayData._layers.87._bounds._northEast.lat
kml[id].overlayData._layers.76._bounds._northEast.lat

我想要访问的子对象是'lat',其中有几个键。

对任何奇怪/错误使用术语的道歉,我仍然试图理解这样的概念。

3 个答案:

答案 0 :(得分:1)

您可以使用Object.keys获取密钥。

var keys = Object.keys(kml[id].overlayData._layers);

// access
keys.forEach(function (key) {
    // kml[id].overlayData._layers[key]._bounds._northEast.lat
});

对于只有一个未知密钥,您可以直接使用密钥数组的第一个元素

var key = Object.keys(kml[id].overlayData._layers)[0];

// access with
kml[id].overlayData._layers[key]._bounds._northEast.lat

答案 1 :(得分:0)

如果我理解正确的话,试试这个:

var number = 354; //whatever number you want to get the value from
kml[id].overlayData._layers['number']._bounds._northEast.lat

请注意,您无法使用blahblah.123来访问已启动的号码属性;请改用blahblah['123']。这也允许您传入变量,如上例所示。

答案 2 :(得分:0)

你可以循环感谢for..in循环

for (var prop in kml[id].overlayData._layers) 
   console.log(kml[id].overlayData._layers[prop]._bounds._northEast.lat);