当前位置: 首页 > 面试题库 >

从客户端对象数组中获取最新日期的优雅方法是什么?

后树
2023-03-14
问题内容

我在项目中使用angularjs

我从服务器获取对象数组。每个对象包含少量属性,其中之一是date属性。

这是我从服务器获得的数组(在json中):

[
  {
    "Address": 25,
    "AlertType": 1,
    "Area": "North",
    "MeasureDate": "2019-02-01T00:01:01.001Z",
    "MeasureValue": -1
  },
  {
    "Address": 26,
    "AlertType": 1,
    "Area": "West",
    "MeasureDate": "2016-04-12T15:13:11.733Z",
    "MeasureValue": -1
  },
  {
    "Address": 25,
    "AlertType": 1,
    "Area": "North",
    "MeasureDate": "2017-02-01T00:01:01.001Z",
    "MeasureValue": -1
  }
          .
          .
          .
]

我需要从数组中获取最新日期。

从对象数组获取最新日期的优雅方法是什么?


问题答案:

一种干净的方法是将每个日期转换为a Date()并采用最大值

new Date(Math.max.apply(null, a.map(function(e) {
  return new Date(e.MeasureDate);
})));

a对象数组在哪里。

这样做是将数组中的每个对象映射到使用值创建的日期MeasureDate。然后,将此映射数组应用于Math.max函数以获取最新日期,并将结果转换为日期。

通过将字符串日期映射到JS Date对象,您最终会使用诸如数组中日期的Min /Max之)类的解决方案吗?

-

不太干净的解决方案是简单地将对象映射到的值MeasureDate并对字符串数组进行排序。这仅适用于您所使用的特定日期格式。

a.map(function(e) { return e.MeasureDate; }).sort().reverse()[0]

如果需要考虑性能,则可能希望reduce使数组获得最大值而不是使用sortand reverse



 类似资料:
  • 问题内容: 我下面有日期数组 并想知道 最近的日期, 例如:最接近今天的日期。 我怎样才能做到这一点? 问题答案: 循环执行,将值转换为日期,然后将最新的值存储在var中。 诸如此类的东西…您就知道了如果您想获得今天之前的最新信息:

  • 我的数据库中有以下数据: 我想获得每个模型组的最新日期: 我试过:

  • 问题内容: 到目前为止,这是我得到的: 这让我既震惊又浪费。如果存在firstChoice,则我将不必要地计算secondChoice。 还有一个更有效的版本: 在这里,如果不复制映射器或声明另一个局部变量,就无法将某些映射函数链接到最后。所有这些使代码比要解决的实际问题更加复杂。 我宁愿这样写: 但是可选:::显然不存在。怎么办? 问题答案: 试试这个: map方法为您提供了一个。然后,该方法将

  • 问题内容: 为一个类获取类文字很容易: 但是,如何获取数组类型的类对象? 这可行,但是很丑陋,可能不是编译时间常数: 我查看了JLS,但唯一发现的是,根据JLS的定义,我所谓的“类文字”不是“文字”。 问题答案: 即使对于数组类型,您仍然可以使用类文字。这样编译就可以了。 JLS的15.8.2节规定: 甲 类文字 是由类,接口,的名称的表达 阵列 ,或原语类型或伪类型,接着是“” 和令牌。 (加粗

  • 问题内容: 如果您将数组作为状态的一部分,并且该数组包含对象,那么通过更改其中一个对象来更新状态的简便方法是什么? 示例,从关于react的教程中修改而来: 问题答案: 在更新状态时,关键部分是将其视为不变。如果可以保证,任何解决方案都可以。 这是我使用immutability-helper的解决方案: jsFiddle:

  • 问题内容: 假设我在变量中有两个日期,例如 我需要获取介于和()之间的月份数。即我需要得到。 有没有一种方法可以通过使用日期函数来获取它,或者我必须爆炸字符串并进行一些计算? 非常感谢 问题答案: 对于PHP> = 5.3 DateTime :: diff返回一个DateInterval对象 如果您未使用PHP 5.3或更高版本运行,我想您将不得不使用unix时间戳: 但这不是很精确(每月并不总是