【问题标题】:sort immutable js data based on the two properties [duplicate]根据两个属性对不可变的js数据进行排序[重复]
【发布时间】:2020-06-03 11:28:39
【问题描述】:

我有一个不可变的地图,我正在尝试根据这两个属性进行排序。例如,我拥有的数据格式:

const items = [
               {id:1,created:2020:12:12T10:12:56,start:2020:12:10},
               {id:1,created:2020:12:12T10:12:58,start:2020:12:09},
               {id:1,created:2020:12:12T10:12:57,start:2020:12:08},
               {id:1,created:2020:12:12T10:12:53,start:2020:12:09},
              ]

我想根据“created”和“start”这两个属性对这些项目进行排序。 我可能会这样做:

const sorted = items.sort((a, b) => new Date(b.get('created')) - new Date(a.get('created')));

有什么方法可以与 start 属性一起排序,比如:

 const sorted = items.sort((a, b) => new Date(b.get('created')) - new Date(a.get('created')) && new Date(b.get('start')) - new Date(a.get('start')) );

这是正确的还是有人知道实现这一目标的好方法。提前致谢

【问题讨论】:

  • 您想先按“created”排序,然后按“start”排序?
  • 可能倒过来,先开始,再按创建
  • 您需要|| 运算符而不是&&。见here
  • 你能解释一下吗@trincot 为什么我需要使用 ||运算符而不是 &&?
  • 如果第一个减法不为零,则另一个变得无关紧要,因此您不需要&&,因为它还需要检查另一个是否非零。您是否阅读了我链接到的问答中接受的答案?

标签: javascript reactjs sorting immutable.js


【解决方案1】:

我会做这样的事情(我没有检查但原则是链接 2 sort ):

const sorted = items.sort((a, b) => new Date(b.get('created')) - new Date(a.get('created'))).sort((a, b) => new Date(b.get('start')) - new Date(a.get('start')))

【讨论】:

  • 那么,这样的话,第一个排序操作会先执行吗?
  • 是的,sort 足够快,可以被调用两次。
猜你喜欢
  • 2020-09-22
  • 2023-03-15
  • 2017-04-06
  • 2012-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
  • 2017-07-18
相关资源
最近更新 更多