Javascript 按dateModified属性对对象项进行排序

Javascript 按dateModified属性对对象项进行排序,javascript,reactjs,sorting,object,Javascript,Reactjs,Sorting,Object,我只是想看看如何根据dateModifiedprop对对象中的项目从最新到最旧进行排序 我已经尝试过使用旧的排序方式,但是,无论发生什么,项目仍然以相同的顺序呈现。除此之外,还有其他方法吗 对象: const filteredAndSortedBotConfigs = Object.keys(botConfigs) .sort((a, b) => new Date(b.modifiedTimestamp) - new Date(a.modifiedTimestamp)) .filt

我只是想看看如何根据
dateModified
prop对对象中的项目从最新到最旧进行排序

我已经尝试过使用旧的排序方式,但是,无论发生什么,项目仍然以相同的顺序呈现。除此之外,还有其他方法吗

对象:

const filteredAndSortedBotConfigs = Object.keys(botConfigs)
  .sort((a, b) => new Date(b.modifiedTimestamp) - new Date(a.modifiedTimestamp))
  .filter(this.filterConfigsByBot)
  .filter(
    (key) =>
      botConfigs[key].status === "RUNNING" && botConfigs[key].mode !== null
  );

代码:

const filteredAndSortedBotConfigs = Object.keys(botConfigs)
  .sort((a, b) => new Date(b.modifiedTimestamp) - new Date(a.modifiedTimestamp))
  .filter(this.filterConfigsByBot)
  .filter(
    (key) =>
      botConfigs[key].status === "RUNNING" && botConfigs[key].mode !== null
  );
截止日期为:

arr.sort((a,b)=>新日期(a)-新日期(b));
//或
arr.sort((a,b)=>新日期(a.getTime()-新日期(b.getTime());
在代码中,
a
b
是键(属性)

因此,您需要使用
botConfigs[key].modifiedTimestamp
读取时间戳:

const filteredAndSortedBotConfigs = Object.keys(botConfigs)
  .sort(
    (a, b) =>
      new Date(botConfigs[a].modifiedTimestamp) -
      new Date(botConfigs[b].modifiedTimestamp)
  )
  .filter(this.filterConfigsByBot)
  .filter(
    (key) =>
      botConfigs[key].status === "RUNNING" && botConfigs[key].mode !== null
  );
编辑: 您正在寻找“从最新到最旧”,即降序,因此您只需反转符号即可

  • a-b
    将按升序排序
  • b-a
    将按降序排序

日期排序逻辑引用键的
modifiedTimestamp
属性,这些键是字符串而不是bot config对象(
a.modifiedTimestamp
b.modifiedTimestamp
都是
未定义的
)。即使在修复它之后,您也只能获得排序的键,并且您必须使用来获得排序的配置数组,我认为这就是您想要的

您可以使用获取配置数组,应用过滤器,然后按
modifiedTimestamp
属性对其进行排序

const filteredAndSortedBotConfigs = Object.values(botConfigs)
  .filter(this.filterConfigsByBot)
  .filter((config) => config.status === 'RUNNING' && config.mode !== null)
  .sort((a, b) => new Date(b.modifiedTimestamp) - new Date(a.modifiedTimestamp))
您还应该更新
this.filterConfigsbybbot
,因为它接收的是bot config对象,而不是密钥

filterConfigsByBot = (config) => {
  const { botId } = config
  // return a boolean based on the `botId` value
}

你能分享更多关于这个问题的详细信息并分享你的对象的JSON示例吗?虽然这似乎是一个愚蠢的想法,但你是否100%确定你使用的是该数组的顺序,而不是再次执行
object.keys(botConfigs)
?上面的代码看起来是正确的。一个小问题-能否在
newDate
中添加缺少的空格,使其显示为
newDate
?代码将只返回已排序的键。您应该使用来获取已排序的对象。是的,您是正确的。作品。你把你的答案贴出来作为提醒是件好事。啊哈。有趣。谢谢分享链接。