简体   繁体   中英

sort method not working properly in JavaScript / React Native

I wanted to sort my Array by Date in ActivityDate but it is not sorting anything.

Its an Array with Objects and ActivityDate is a Field of every Object. If you look at the output on the end you can see a Date that should be first in the log but it is still at the end as it is concated with Array1.

 const dummy = "2020-06-01T22:00:00.000Z"; const Array1 = [{"activitydate":"2020-06-01T22:00:00.000Z","phaseid":8076,"time":120,"userid":138,"remark":"freigeschaltet","zkub":" ","status":0,"status_color":"000000","comment":"","project_name":"IT - Exchange Server"},{"activitydate":"2020-06-01T22:00:00.000Z","phaseid":null,"time":60,"userid":138,"remark":"dddd","zkub":"B","status":1,"status_color":"ff8000","comment":"","project_name":null},{"activitydate":"2020-06-02T22:00:00.000Z","phaseid":null,"time":228,"userid":138,"remark":"test\n","zkub":"Z","status":1,"status_color":"ff8000","comment":"","project_name":null},{"activitydate":"2020-06-03T22:00:00.000Z","phaseid":7651,"time":240,"userid":138,"remark":"test\n","zkub":" ","status":0,"status_color":"000000","comment":"","project_name":"ProFrame"},{"activitydate":"2020-06-03T22:00:00.000Z","phaseid":null,"time":120,"userid":138,"remark":"testy reload","zkub":"B","status":1,"status_color":"ff8000","comment":"","project_name":null},{"activitydate":"2020-06-03T22:00:00.000Z","phaseid":8198,"time":120,"userid":138,"remark":"start\n","zkub":" ","status":1,"status_color":"ff8000","comment":"","project_name":"JXM-CE-80A Zentralelektrik"},{"activitydate":"2020-06-05T22:00:00.000Z","phaseid":8064,"time":60,"userid":138,"remark":"xchng","zkub":" ","status":1,"status_color":"ff8000","comment":"","project_name":"Motor 992 B6T"},{"activitydate":"2020-06-23T22:00:00.000Z","phaseid":7534,"time":456,"userid":138,"remark":"tst","zkub":" ","status":1,"status_color":"ff8000","comment":"","project_name":"IT - Exchange Server"},{"activitydate":"2020-06-24T22:00:00.000Z","phaseid":7348,"time":150,"userid":138,"remark":"kekw\n","zkub":" ","status":1,"status_color":"ff8000","comment":"","project_name":"ERB-UL"},{"activitydate":"2020-06-25T22:00:00.000Z","phaseid":7327,"time":235,"userid":138,"remark":"teschting 26.06\n","zkub":" ","status":1,"status_color":"ff8000","comment":"","project_name":"ERB2-H"},{"activitydate":"2020-06-27T22:00:00.000Z","phaseid":7651,"time":456,"userid":138,"remark":"Unlocked EIntrag\n\n","zkub":" ","status":1,"status_color":"ff8000","comment":"","project_name":"ProFrame"},{"activitydate":"2020-06-27T22:00:00.000Z","phaseid":7651,"time":456,"userid":138,"remark":"test","zkub":" ","status":1,"status_color":"ff8000","comment":"","project_name":"ProFrame"},{"activitydate":"2020-06-29T22:00:00.000Z","phaseid":7651,"time":456,"userid":138,"remark":"wie oft muss ich clicken?","zkub":" ","status":1,"status_color":"ff8000","comment":"","project_name":"ProFrame"}] const Array2 = [{"activitydate":"2020-06-01T22:00:00.000Z","name":"Pfingstmontag","hourstype":"H","state":1}] const ArrFinal = Array1.concat(Array2).sort((a, b) => Date.parse(new Date(...a.activitydate.toString().split("-")[2])) - Date.parse(new Date(...b.activitydate).toString().split("-")[2])) console.log(JSON.stringify(ArrFinal)) console.log(dummy.split("-")[2])

The string in activitydate property is in format that can just be parsed automatically with new Date(DATE_IN_STRING) .

Just parse the date and sort by Date object.

const ArrFinal = Array1.concat(Array2).sort((a, b) => new Date(a.activitydate) - new Date(b.activitydate));

This works fine.

more detail is here

Example code:

 const Array1 = [{"activitydate":"2020-06-01T22:00:00.000Z","phaseid":8076,"time":120,"userid":138,"remark":"freigeschaltet","zkub":" ","status":0,"status_color":"000000","comment":"","project_name":"IT - Exchange Server"},{"activitydate":"2020-06-01T22:00:00.000Z","phaseid":null,"time":60,"userid":138,"remark":"dddd","zkub":"B","status":1,"status_color":"ff8000","comment":"","project_name":null},{"activitydate":"2020-06-02T22:00:00.000Z","phaseid":null,"time":228,"userid":138,"remark":"test\n","zkub":"Z","status":1,"status_color":"ff8000","comment":"","project_name":null},{"activitydate":"2020-06-03T22:00:00.000Z","phaseid":7651,"time":240,"userid":138,"remark":"test\n","zkub":" ","status":0,"status_color":"000000","comment":"","project_name":"ProFrame"},{"activitydate":"2020-06-03T22:00:00.000Z","phaseid":null,"time":120,"userid":138,"remark":"testy reload","zkub":"B","status":1,"status_color":"ff8000","comment":"","project_name":null},{"activitydate":"2020-06-03T22:00:00.000Z","phaseid":8198,"time":120,"userid":138,"remark":"start\n","zkub":" ","status":1,"status_color":"ff8000","comment":"","project_name":"JXM-CE-80A Zentralelektrik"},{"activitydate":"2020-06-05T22:00:00.000Z","phaseid":8064,"time":60,"userid":138,"remark":"xchng","zkub":" ","status":1,"status_color":"ff8000","comment":"","project_name":"Motor 992 B6T"},{"activitydate":"2020-06-23T22:00:00.000Z","phaseid":7534,"time":456,"userid":138,"remark":"tst","zkub":" ","status":1,"status_color":"ff8000","comment":"","project_name":"IT - Exchange Server"},{"activitydate":"2020-06-24T22:00:00.000Z","phaseid":7348,"time":150,"userid":138,"remark":"kekw\n","zkub":" ","status":1,"status_color":"ff8000","comment":"","project_name":"ERB-UL"},{"activitydate":"2020-06-25T22:00:00.000Z","phaseid":7327,"time":235,"userid":138,"remark":"teschting 26.06\n","zkub":" ","status":1,"status_color":"ff8000","comment":"","project_name":"ERB2-H"},{"activitydate":"2020-06-27T22:00:00.000Z","phaseid":7651,"time":456,"userid":138,"remark":"Unlocked EIntrag\n\n","zkub":" ","status":1,"status_color":"ff8000","comment":"","project_name":"ProFrame"},{"activitydate":"2020-06-27T22:00:00.000Z","phaseid":7651,"time":456,"userid":138,"remark":"test","zkub":" ","status":1,"status_color":"ff8000","comment":"","project_name":"ProFrame"},{"activitydate":"2020-06-29T22:00:00.000Z","phaseid":7651,"time":456,"userid":138,"remark":"wie oft muss ich clicken?","zkub":" ","status":1,"status_color":"ff8000","comment":"","project_name":"ProFrame"}] const Array2 =[{"activitydate":"2020-06-01T22:00:00.000Z","name":"Pfingstmontag","hourstype":"H","state":1}] const ArrFinal = Array1.concat(Array2); let resultArr = ArrFinal.sort((a,b) => b.activitydate - a.activitydate); console.log(resultArr);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM