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
?代码将只返回已排序的键。您应该使用来获取已排序的对象。是的,您是正确的。作品。你把你的答案贴出来作为提醒是件好事。啊哈。有趣。谢谢分享链接。