This question has been asked various times, but in most of the questions the person asking is doing something wrong.
Examples:
Array.sort working differently in chrome and firefox and IE
Array.sort() behaves differently in Firefox and Chrome/Edge
Hopefully in my case, I'm doing something wrong as well. But the evidence against the browsers is pretty damning!
When you view the table in my website, it is sorted in opposite orders on Firefox and Chrome.
Here is my code:
function sortByKey(a, b) {
console.log(`b: ${b.id} - a: ${a.id}`);
return b[SORTING_KEY] - a[SORTING_KEY];
}
export function sortObjectValues(mappedObject) {
console.log('BEGIN SORTING');
return Object.values(mappedObject)
.sort(sortByKey);
}
Here is the log output in Chrome:
BEGIN SORTING
b: 7920 - a: 7924
b: 7924 - a: 7931
b: 7920 - a: 7931
b: 7924 - a: 7931
b: 7931 - a: 7942
b: 7920 - a: 7942
b: 7942 - a: 7945
b: 7931 - a: 7945
b: 7924 - a: 7945
b: 7931 - a: 7952
b: 7945 - a: 7952
b: 7924 - a: 7952
b: 7931 - a: 7953
b: 7920 - a: 7953
b: 7942 - a: 7953
b: 7931 - a: 7959
b: 7924 - a: 7959
b: 7945 - a: 7959
b: 7931 - a: 9185
b: 7959 - a: 9185
b: 7924 - a: 9185
b: 7952 - a: 9185
b: 7945 - a: 9189
b: 7924 - a: 9189
b: 7952 - a: 9189
b: 9185 - a: 9189
And here is the output in Firefox:
BEGIN SORTING
b: 7924 - a: 7920
b: 7931 - a: 7920
b: 7931 - a: 7924
b: 7942 - a: 7920
b: 7942 - a: 7931
b: 7945 - a: 7920
b: 7945 - a: 7942
b: 7945 - a: 7931
b: 7945 - a: 7924
b: 7952 - a: 7920
b: 7952 - a: 7942
b: 7952 - a: 7931
b: 7952 - a: 7945
b: 7952 - a: 7924
b: 7953 - a: 7920
b: 7953 - a: 7942
b: 7953 - a: 7931
b: 7959 - a: 7920
b: 7959 - a: 7942
b: 7959 - a: 7953
b: 7959 - a: 7931
b: 7959 - a: 7945
b: 7959 - a: 7924
b: 9185 - a: 7920
b: 9185 - a: 7942
b: 9185 - a: 7953
b: 9185 - a: 7931
b: 9185 - a: 7945
b: 9185 - a: 7959
b: 9185 - a: 7924
b: 9185 - a: 7952
b: 9189 - a: 7920
b: 9189 - a: 7942
b: 9189 - a: 7953
b: 9189 - a: 7931
b: 9189 - a: 7945
b: 9189 - a: 7959
b: 9189 - a: 7924
b: 9189 - a: 7952
b: 9189 - a: 9185
To me, it seems like the order of the arguments has been reversed in Firefox. What is going on here??
Chrome userAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36
Firefox userAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:86.0) Gecko/20100101 Firefox/86.0
When logging SORTING_KEY
along with id, I get:
Chrome
BEGIN SORTING
b: SORTING_KEY=0 id=7920 - a: SORTING_KEY=6 id=7924
b: SORTING_KEY=6 id=7924 - a: SORTING_KEY=3 id=7931
b: SORTING_KEY=0 id=7920 - a: SORTING_KEY=3 id=7931
b: SORTING_KEY=6 id=7924 - a: SORTING_KEY=3 id=7931
b: SORTING_KEY=3 id=7931 - a: SORTING_KEY=1 id=7942
b: SORTING_KEY=0 id=7920 - a: SORTING_KEY=1 id=7942
b: SORTING_KEY=1 id=7942 - a: SORTING_KEY=4 id=7945
b: SORTING_KEY=3 id=7931 - a: SORTING_KEY=4 id=7945
b: SORTING_KEY=6 id=7924 - a: SORTING_KEY=4 id=7945
b: SORTING_KEY=3 id=7931 - a: SORTING_KEY=7 id=7952
b: SORTING_KEY=4 id=7945 - a: SORTING_KEY=7 id=7952
b: SORTING_KEY=6 id=7924 - a: SORTING_KEY=7 id=7952
b: SORTING_KEY=3 id=7931 - a: SORTING_KEY=2 id=7953
b: SORTING_KEY=0 id=7920 - a: SORTING_KEY=2 id=7953
b: SORTING_KEY=1 id=7942 - a: SORTING_KEY=2 id=7953
b: SORTING_KEY=3 id=7931 - a: SORTING_KEY=5 id=7959
b: SORTING_KEY=6 id=7924 - a: SORTING_KEY=5 id=7959
b: SORTING_KEY=4 id=7945 - a: SORTING_KEY=5 id=7959
b: SORTING_KEY=3 id=7931 - a: SORTING_KEY=9 id=9185
b: SORTING_KEY=5 id=7959 - a: SORTING_KEY=9 id=9185
b: SORTING_KEY=6 id=7924 - a: SORTING_KEY=9 id=9185
b: SORTING_KEY=7 id=7952 - a: SORTING_KEY=9 id=9185
b: SORTING_KEY=4 id=7945 - a: SORTING_KEY=8 id=9189
b: SORTING_KEY=6 id=7924 - a: SORTING_KEY=8 id=9189
b: SORTING_KEY=7 id=7952 - a: SORTING_KEY=8 id=9189
b: SORTING_KEY=9 id=9185 - a: SORTING_KEY=8 id=9189
Firefox
BEGIN SORTING
b: SORTING_KEY=6 id=7924 - a: SORTING_KEY=0 id=7920
b: SORTING_KEY=3 id=7931 - a: SORTING_KEY=0 id=7920
b: SORTING_KEY=3 id=7931 - a: SORTING_KEY=6 id=7924
b: SORTING_KEY=1 id=7942 - a: SORTING_KEY=0 id=7920
b: SORTING_KEY=1 id=7942 - a: SORTING_KEY=3 id=7931
b: SORTING_KEY=4 id=7945 - a: SORTING_KEY=0 id=7920
b: SORTING_KEY=4 id=7945 - a: SORTING_KEY=1 id=7942
b: SORTING_KEY=4 id=7945 - a: SORTING_KEY=3 id=7931
b: SORTING_KEY=4 id=7945 - a: SORTING_KEY=6 id=7924
b: SORTING_KEY=7 id=7952 - a: SORTING_KEY=0 id=7920
b: SORTING_KEY=7 id=7952 - a: SORTING_KEY=1 id=7942
b: SORTING_KEY=7 id=7952 - a: SORTING_KEY=3 id=7931
b: SORTING_KEY=7 id=7952 - a: SORTING_KEY=4 id=7945
b: SORTING_KEY=7 id=7952 - a: SORTING_KEY=6 id=7924
b: SORTING_KEY=2 id=7953 - a: SORTING_KEY=0 id=7920
b: SORTING_KEY=2 id=7953 - a: SORTING_KEY=1 id=7942
b: SORTING_KEY=2 id=7953 - a: SORTING_KEY=3 id=7931
b: SORTING_KEY=5 id=7959 - a: SORTING_KEY=0 id=7920
b: SORTING_KEY=5 id=7959 - a: SORTING_KEY=1 id=7942
b: SORTING_KEY=5 id=7959 - a: SORTING_KEY=2 id=7953
b: SORTING_KEY=5 id=7959 - a: SORTING_KEY=3 id=7931
b: SORTING_KEY=5 id=7959 - a: SORTING_KEY=4 id=7945
b: SORTING_KEY=5 id=7959 - a: SORTING_KEY=6 id=7924
b: SORTING_KEY=9 id=9185 - a: SORTING_KEY=0 id=7920
b: SORTING_KEY=9 id=9185 - a: SORTING_KEY=1 id=7942
b: SORTING_KEY=9 id=9185 - a: SORTING_KEY=2 id=7953
b: SORTING_KEY=9 id=9185 - a: SORTING_KEY=3 id=7931
b: SORTING_KEY=9 id=9185 - a: SORTING_KEY=4 id=7945
b: SORTING_KEY=9 id=9185 - a: SORTING_KEY=5 id=7959
b: SORTING_KEY=9 id=9185 - a: SORTING_KEY=6 id=7924
b: SORTING_KEY=9 id=9185 - a: SORTING_KEY=7 id=7952
b: SORTING_KEY=8 id=9189 - a: SORTING_KEY=0 id=7920
b: SORTING_KEY=8 id=9189 - a: SORTING_KEY=1 id=7942
b: SORTING_KEY=8 id=9189 - a: SORTING_KEY=2 id=7953
b: SORTING_KEY=8 id=9189 - a: SORTING_KEY=3 id=7931
b: SORTING_KEY=8 id=9189 - a: SORTING_KEY=4 id=7945
b: SORTING_KEY=8 id=9189 - a: SORTING_KEY=5 id=7959
b: SORTING_KEY=8 id=9189 - a: SORTING_KEY=6 id=7924
b: SORTING_KEY=8 id=9189 - a: SORTING_KEY=7 id=7952
b: SORTING_KEY=8 id=9189 - a: SORTING_KEY=9 id=9185
Map of id
to SORTING_KEY
is identical between the two browsers:
7920: 0
7924: 6
7931: 3
7942: 1
7945: 4
7952: 7
7953: 2
7959: 5
9185: 9
9189: 8