2017-04-02 8 views
0

J'essaie de trier les données immuables par date, mais j'ai du mal à comprendre pourquoi cela ne fonctionne pas. Certains exemples utilisent des fonctions de tri vanilla javascript et d'autres utilisent les méthodes get/set sur les touches. J'ai essayé les deux sans aucune chance. Devrais-je utiliser Map au lieu de List?Comment trier les données immuables par date

const data = [{"dateTimeMoved":1490884969509,"dateTimeUploaded":"2017-03-30 09:42:51.970","latNew":"29.839658296606263","latOld":"29.85996055603027","lngNew":"-95.20913287997246","lngOld":"-95.18970489501953","marketId":"13","subdivisionId":"249044","subdivisionName":"Tidwell Lakes Ranch","territoryId":"4899","territoryName":"Central NE","userId":"1a94157a-bb38-4157-95ea-2ff8b43113e2","userName":"Rudy Sanchez","status":"denied","apprDenyDate":1491067499657,"comment":"Deny-- now approved, now denied","apprDenyById":"1a94157a-bb38-4157-95ea-2ff8b43113e2","apprDenyByName":"Rudy Sanchez"},{"dateTimeMoved":1490884636849,"dateTimeUploaded":"2017-03-30 09:37:17.924","latNew":"29.801395477185157","latOld":"29.822208688618133","lngNew":"-95.20630147308111","lngOld":"-95.20605336874723","marketId":"13","subdivisionId":"246090","subdivisionName":"Hidden Meadow","territoryId":"4899","territoryName":"Central NE","userId":"1a94157a-bb38-4157-95ea-2ff8b43113e2","userName":"Rudy Sanchez","status":"approved","apprDenyDate":1490884662547,"comment":"Approved this move","apprDenyById":"1a94157a-bb38-4157-95ea-2ff8b43113e2","apprDenyByName":"Rudy Sanchez"}] 
 

 
const immutableData = Immutable.List(data) 
 

 

 
const sortMarkerMoveDate = (option, array) => { 
 

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

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

 
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.js"></script>

Répondre

1

Le problème est ici que .sort ne mute pas la liste, il est le tri, mais plutôt, retourner une nouvelle liste triée.

Cela fonctionne pour vous (ajouté mieux data pour les tests):

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()) 

Alors, juste retour l'array.sort(…) tout de suite.

+0

merci beaucoup pour l'aide – texas697