0

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

2
  • Please don't "hide" your code/snippet. And for your next question: Part of creating a minimal reproducible example is to remove anything that isn't directly involved in the question/problem. The only relevant property of Array1 is activitydate. The other properties only force us to scroll. Commented Aug 5, 2020 at 11:51
  • Mashing all in one line is not always a good idea. You have a typo in your ( ) which isn't a problem in this case, but maybe in your next question. Storing your dates in separate variables would have made the misplaced ) quite/more obvious. Commented Aug 5, 2020 at 11:52

2 Answers 2

4

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.

Sign up to request clarification or add additional context in comments.

1 Comment

Yes thanks this seems to work. Less work that I have tried thanks
1

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.