Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
142
rated 0 times [  143] [ 1]  / answers: 1 / hits: 8106  / 4 Years ago, wed, september 2, 2020, 12:00:00

I am sorting my array in JavaScript based on names after then I am sorting it based in joinDate but somehow it is not checking for joiningDate.


Unfortunately, I can't use an if-else condition - I only want to use ternary operators.


My code is like this:


person.sort(((a, b) => (a.name > b.name)  ? 1 : (a.joinDate > b.joinDate) ? 1 : -1));

It is sorting the names but not sorting the joinDate property


My list look like this:


{
"data": [
{
"id": "fdsf",
"name": "Julie",
"joinDate": "01/10/2019"

},
]
}

More From » arrays

 Answers
20

The test should be (assuming your date format is dd/mm/yyyy)


if (a.name > b.name) return 1;
if (a.name < b.name) return -1;
let [a_dd, a_mm, a_yy] = a.joindate.split("/");
let [b_dd, b_mm, b_yy] = b.joindate.split("/");
if (a_yy !== b_yy) return a_yy - b_yy;
if (a_mm !== b_mm) return a_mm - b_mm;
if (a_dd !== b_dd) return a_dd - b_dd;
return 0;

[#2756] Sunday, August 30, 2020, 4 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
kristinsonjab

Total Points: 364
Total Questions: 98
Total Answers: 98

Location: Christmas Island
Member since Mon, Oct 19, 2020
4 Years ago
kristinsonjab questions
Fri, Mar 4, 22, 00:00, 2 Years ago
Fri, Jan 22, 21, 00:00, 3 Years ago
Fri, Aug 14, 20, 00:00, 4 Years ago
;