获取对象中具有最大索引键的属性

时间:2017-04-14 16:12:38

标签: javascript jquery

从下面的对象中,如何从具有最大索引键的属性中获取“空气”读数,即4? (30.9)

{
  1: {
    air: "31.2",
    evap: "25.3",
    t_condenser: "43.8"
  },
  2: {
    air: "31.1",
    evap: "25.3",
    t_condenser: "43.6"
  },
  3: {
    air: "31.0",
    evap: "25.3",
    t_condenser: "43.5"
  },
  4: {
    air: "30.9",
    evap: "25.2",
    t_condenser: "43.3"
  }
}

我尝试过以下方法,尝试获取最后一个密钥,但它只读取undefined:

$.getJSON("handler.php?action=fetchLAE", function(data){

  console.log(data.length);

});

3 个答案:

答案 0 :(得分:2)

注意:数据格式错误。这就是数组的用途,你的API会返回一个Object。

解决方案:找到数据中的最高键(对象):

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

说明:

Object.keys(data)

将所有属性作为数组获取,例如[1,4,3,2]。

现在我们将它按升序排序并取最后一个:

.sort().pop()

因此我们将此属性从对象中取出,并取其空气值

data[4].air

http://jsbin.com/setibevozu/edit?console

答案 1 :(得分:1)

您可以使用Object.keys()获取对象的键,然后使用Math.max获得最高的键。



var json = {
  1: {
    air: "31.2",
    evap: "25.3",
    t_condenser: "43.8"
  },
  2: {
    air: "31.1",
    evap: "25.3",
    t_condenser: "43.6"
  },
  3: {
    air: "31.0",
    evap: "25.3",
    t_condenser: "43.5"
  },
  4: {
    air: "30.9",
    evap: "25.2",
    t_condenser: "43.3"
  }
};


var maxKey = Math.max(...Object.keys(json));
var lastElementAir = json[maxKey].air;

console.log(lastElementAir);




答案 2 :(得分:0)

这不是有效的JSON,而是javascript对象。

您可以使用Object.keys函数获取对象属性,然后使用length属性访问最后一个元素或属性。

console.log(obj[Object.keys(obj).length].air);



var obj = {
1: {
air: "31.2",
evap: "25.3",
t_condenser: "43.8"
},
2: {
air: "31.1",
evap: "25.3",
t_condenser: "43.6"
},
3: {
air: "31.0",
evap: "25.3",
t_condenser: "43.5"
},
4: {
air: "30.9",
evap: "25.2",
t_condenser: "43.3"
}
};

console.log(obj[Object.keys(obj).length].air);