Estoy tratando de entender por qué Safari se comporta de manera diferente para ordenar una matriz anidada por el primer subelemento, con este comparador específico de "forma corta":
[[1, 0], [1, 1], [0, 0], [0, 1]].sort((a, b) => a[0] < b[0] ? -1 : a[0] > b[0])
Chrome y Firefox dan el resultado esperado:
[[0, 0], [0, 1], [1, 0], [1, 1]]
Pero Safari (15.1; que debería hacer ordenación estable ) da:
[[0, 1], [0, 0], [1, 1], [1, 0]]
Sé que se supone que la función de comparación debe devolver -1, 0, 1; Y, de hecho, el resultado correcto se obtiene en todos los navegadores utilizando el adecuado:
(a, b) => a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0
Pero para el comparador original de "forma corta", esperaba que el resultado booleano de a[0] > b[0] se convirtiera en 0 y 1, como supongo que sucede en Chrome y Firefox. ¿Alguna idea de por qué Safari está dando ese resultado en ese caso?