Javascript 如何按日期对不可变数据进行排序

Javascript 如何按日期对不可变数据进行排序,javascript,immutable.js,Javascript,Immutable.js,我试图按日期对不可变数据进行排序,但很难理解为什么这样做不起作用。有些示例使用普通的javascript排序函数,有些示例使用键上的get/set方法。我两个都试过了,运气都不好。我应该使用地图而不是列表吗 const data=[{“dateTimeMoved”:149084969509,“dateTimeUploaded”:“2017-03-30 09:42:51.970”,“latNew”:“29.839658296606263”,“latOld”:“29.8599605560327”,

我试图按日期对不可变数据进行排序,但很难理解为什么这样做不起作用。有些示例使用普通的javascript排序函数,有些示例使用键上的get/set方法。我两个都试过了,运气都不好。我应该使用地图而不是列表吗

const data=[{“dateTimeMoved”:149084969509,“dateTimeUploaded”:“2017-03-30 09:42:51.970”,“latNew”:“29.839658296606263”,“latOld”:“29.8599605560327”,“lngNew”:-95.20913287997246”,“lngOld”:-95.18970489501953”,“marketId”:“13”,“SubsectionID”:“249044”,“SubsectionName”:“蒂德维尔湖牧场”,“TerryID”:“4899”,“TerryName”:“Central NE”,“userId:“1a94157a-bb38-4157-95ea-2ff8b43113e2”,“userName:“Rudy Sanchez”,“status:“denied”,“apprDenyDate:”149106499657,“comment:”Deniy--now approved,now denied”,“apprDenyById:”1a94157a-bb38-4157-95ea-2ff8b43113e2”,“apprDenyByName:”Rudy Sanchez“},{“dateTimeMoved:”149084636849,“dateTimeUploaded:”2017-03-30 09:37:17.924”,“latNew:”29.801395477185157,“拉托尔德”:“29.822208688618133”,“LGNEW”:“-95.20630147308111”,“lngOld”:“-95.206053368747723”,“市场ID”:“13”,“细分ID”:“246090”,“细分名称”:“隐藏草地”,“territoryId”:“4899”,“territoryName”:“Central NE”,“userId”:“1a94157a-bb38-4157-95ea-2FF83113E2”,“用户名”:“Rudy Sanchez”,“状态”:“已批准”,“AppryDate”“:149088466547,“评论”:“批准了这一行动”,“apprDenyById”:“1a94157a-bb38-4157-95ea-2ff8b43113e2”,“apprDenyByName”:“Rudy Sanchez”}]
常量immutableData=Immutable.List(数据)
常量sortMarkerMoveDate=(选项,数组)=>{
开关(选件){
案例“dateTimeMoved”:
array.sort((a,b)=>新日期(a.dateTimeMoved)-新日期(b.dateTimeMoved))
打破
案例“-dateTimeMoved”:
array.sort((a,b)=>新日期(b.dateTimeMoved)-新日期(a.dateTimeMoved))
打破
}
返回数组
}
常量dateTimeOption1='-dateTimeMoved'
常量dateTimeOption2='dateTimeMoved'
const result=sortMarkerMoveDate(日期时间选项2,不可变数据)
console.log(结果)

这里的问题是
.sort
不会改变它正在排序的列表,而是返回一个新的排序列表

这将适用于您(添加了更好的测试数据):

因此,只要立即返回
数组。sort(…)

const data = [{"dateTimeMoved":2490884636849}, {"dateTimeMoved":10}, {"dateTimeMoved":1490884969509},{"dateTimeMoved":1490884636849}, {"dateTimeMoved":0}]

const immutableData = Immutable.List(data)


const sortMarkerMoveDate = (option, array) => {
  switch (option) {
    case 'dateTimeMoved':
      return array.sort((a, b) => new Date(a.dateTimeMoved) - new Date(b.dateTimeMoved))
    case '-dateTimeMoved':
      return array.sort((a, b) => new Date(b.dateTimeMoved) - new Date(a.dateTimeMoved))
    default:
      return array;
  }
}

const dateTimeOption1 = '-dateTimeMoved'   
const dateTimeOption2 = 'dateTimeMoved'   
const result = sortMarkerMoveDate(dateTimeOption2, immutableData)

console.log(result.toJS())