从json中获取具有历元时间的最新记录

get most recent record from json having epoch time

本文关键字:时间 最新 新记录 json 获取      更新时间:2023-09-26

我正在使用angularjs创建应用程序。json格式如下:

{
    "dps": {
      "1455719820": 0,
      "1455720150": 0,
      "1455720480": 0,
      "1455720810": 0,
      "1455721140": 0,
      "1455721470": 0,
      "1455721800": 0,
      "1455722130": 0
    }
  }

我想从json中获得最近时间的值。我不知道该怎么做

我认为最兼容和最容易阅读的方式:

  1. 使用Object.keys
  2. 排序()如果有必要(在你的例子中没有必要)
  3. 使用pop或arr[arr.length-1]
  4. 访问值(在您的示例中总是0)

var o = {
    "dps": {
      "1455719820": 10,
      "1455720150": 90,
      "1455720480": 110,
      "1455720810": 560,
      "1455721140": 670,
      "1455721470": 120,
      "1455721800": 9,
      "1455722130": 130
    }
  }
// just sorting
var arr = Object.keys(o.dps).sort(); // your keys were actually already sorted
console.log(arr);
// To get the latest value; 
var newest = arr.pop();
var val = o.dps[newest];
console.log(newest,val)

 var biggest=0;
 var obj = {
    "dps": {
      "1455719820": 0,
      "1455720150": 0,
      "1455720480": 0,
      "1455720810": 0,
      "1455721140": 0,
      "1455721470": 0,
      "1455721800": 0,
      "1455722130": 0
    }
  }
for(key in obj.dps){
    if(biggest<key){
          biggest = key;
    }
}
// biggest will now have the biggest timestamp 

您可以使用Array#reduce,它只执行一个循环,而不需要预先对键进行排序。

var data = { "dps": { "1455719820": 0, "1455720150": 0, "1455720480": 0, "1455720810": 0, "1455721140": 0, "1455721470": 0, "1455721800": 0, "1455722130": 42 } },
    result = data.dps[Object.keys(data.dps).reduce(function (r, a) {
        return r < a ? a : r;
    }, 0)];
console.log(result);

var o = {
  "dps": {
    "1455719820": 0,
    "1455720150": 0,
    "1455720480": 0,
    "1455720810": 0,
    "1455721140": 0,
    "1455721470": 0,
    "1455721800": 0,
    "1455722130": 0
  }
}
var max = Math.max.apply(Math, Object.keys(o.dps));
console.log(max);