【问题标题】:How to filter one data object at each hour for each day in a given data range in javascript如何在javascript中的给定数据范围内每天每小时过滤一个数据对象
【发布时间】:2020-07-28 19:11:18
【问题描述】:

这是一个 json 对象的 sn-p,我试图从 1/1 到 3/31 每小时获取一个 json 对象。 假设有一些 JSON 对象有时间 01/01/2020 12:00 ,01/01/2020 13:00 等等。我只想每天获取这些 json 对象。所以每天应该有 24 个 json 对象。我知道如何根据一个静态条件过滤元素数组,但我不确定当条件是动态时如何做。

[
  {
    "id": 2617820,
    "time": "01/01/2020 12:16",
    "stationId": "150000",
    "RoadStatus": "Ice",
    "surfaceRoadTemperature": "30.9F",

  },
  {
    "id": 2617819,
    "time": "01/01/2020 12:26",
    "stationId": "150000",
    "RoadStatus": "Ice",
    "surfaceRoadTemperature": "30.7F",
  },
  {
    "id": 2617818,
    "time": "01/01/2020 12:30",
    "stationId": "150000",
    "RoadStatus": "Ice",
    "surfaceRoadTemperature": "30.9F",

  },
  {
    "id": 2617817,
    "time": "01/01/2020 12:36",
    "stationId": "150000",
    "RoadStatus": "Ice",
    "surfaceRoadTemperature": "30.7F",

  }
]

【问题讨论】:

  • 1.我没有在 JSON 对象中看到确切的时间 - 我们假设有 - 是你想要的 - 其他的呢:12:16、12:26、12:30 等 - 或者,只选择一个?! ?
  • 2.您在问题中使用了 24 小时格式 - 太好了! (13:00) - 我可以推荐使用全世界都使用的日期格式(除了七大洲之一的北部的一小部分 - 美国......)作为月日、月、年(31/3 而不是“错误”的 3/31...“7 月 4 日”(正确)是什么时候?-“7 月 4 日”(只是傻 :)))?
  • 3.您想要出现一次还是想要每小时更新一次(在页面加载后的每小时或每小时)?

标签: javascript arrays json filter


【解决方案1】:

你提到了 Array.filter() 所以我假设你可能想要一个函数式的答案。你试过 Array.reduce()。

arr.reduce(callback( accumulator, currentValue[, index[, array]] )[, initialValue]) - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce

在您的情况下,回调类似于

function addHourif(acc, cv){
const prevtime = new Date(acc.slice(-1)[0].time).getTime()
const cvtime = new Date(cv.time).getTime()

if (cvtime >= prevtime + 60*60*1000 ) return [...acc , cv]
else return acc
}

console.log(a.reduce(addHourif, [a[0]]))

如果我更改了时间,这对您的数据有效,这只是检查自上次输入后是否过去了一个小时,您可以使用 Date 方法来优化该过程,以便您获得最接近一小时或正好 24 小时天等...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 2021-02-02
    • 1970-01-01
    • 2019-12-01
    • 2021-01-08
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多