【发布时间】:2020-10-25 08:49:44
【问题描述】:
我有一个类似的数组:
[{"x": 2020-06-27T08:00:00.000Z, "y": 33},
{"x": 2020-06-27T10:00:00.000Z, "y": 500},
{"x": 2020-06-27T12:00:00.000Z, "y": 98},
{"x": 2020-06-27T14:00:00.000Z, "y": 344},
{"x": 2020-06-27T22:00:00.000Z, "y": 1}]
数组已经从最早到最新进行了预排序。我需要做的是通过数组的“x”(这是一个日期),并检查是否有一些偶数小时(如 0、2、4 .. 或 22)不存在,如果不存在,则添加新的日期中包含该小时“x”且“y”值为零的条目。
有什么有效的方法吗? 最后,数组应该是这样的:
[{"x": 2020-06-27T00:00:00.000Z, "y": 0},
{"x": 2020-06-27T02:00:00.000Z, "y": 0},
{"x": 2020-06-27T04:00:00.000Z, "y": 0},
{"x": 2020-06-27T06:00:00.000Z, "y": 0},
{"x": 2020-06-27T08:00:00.000Z, "y": 33},
{"x": 2020-06-27T10:00:00.000Z, "y": 500}]
等等,
【问题讨论】:
-
我会建议将数组转换为以日期为键的对象,或者将日期和'y'值放在两个不同的数组中。
-
如果你坚持使用数组而不是对象,你需要迭代检查
x是否存在。为此,您可以使用二进制搜索,因为您的数组已排序。 -
您是在检查单个值,还是检查所有缺少偶数小时的实例?
标签: javascript arrays reactjs reduce