使用括号表示法访问对象中的属性

时间:2018-03-07 21:35:24

标签: javascript

我正在通过javascript使用ajax调用并返回json。

enter image description here

我使用括号表示法访问数据,因为对象名称有空格,所以我不能使用点表示法。

这是我的ajax调用的成功函数(由于API密钥没有输入整个ajax调用)。

success: function(data){
     console.log(data); 
     console.log(data['Time Series (1min)']);
},

我想要“时间序列(1分钟)”对象中长属性列表中的最后一个属性。我不能通过键/属性名称来调用它,因为每分钟,属性名称都会更改(数据是每分钟一次)。到目前为止,我还没有找到任何帮助我在线的东西。我试过.last()但点符号和括号似乎没有jive。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

获得数据后:

const series = data['Time Series (1min)'];

只需拿走所有密钥并获得时间戳最高的密钥:

const last = Object.keys(series).reduce((a, b) => a > b ? a : b);

现在我们得到了最高的关键,很简单:

console.log(series[last]);

所有必要的原因导致对象键顺序无法保证,因此您可以切换到使用数组或Map。

答案 1 :(得分:0)

我假设您只想获取对象的最后一个属性的值。 (基于this主题,对象属性已排序)

更简单:

data[Object.keys(data).pop()]

//编辑:

首先,您要获得"时间序列"财产(每分钟都在变化),所以也许你想要这样的东西:

data[Object.keys(data).find(key => key.match(/Time Series \(\d+min\)/))]

这将获得您的方案中的时区属性值(带有日期的对象)。并且 - 正如我所看到的 - 您收到的数据按日期时间排序,您可以通过运行我未编辑过的帖子编写的代码来获取您感兴趣的对象。