Me encontré con una paradoja en la que la clasificación de matrices funciona solo para valores numéricos o de cadenas numéricas. Aquí está el ejemplo:
const sortArr = (a, b) => a[1] - b[1]; const arr1 = [['two', '2'], ['one', '1'], ['three', '3']]; const arr2 = [['WA', 'Washington'], ['NC', 'North Carolina'], ['PA', 'Pennsylvania']]; let sortedArr1 = arr1.sort(sortArr); let sortedArr2 = arr2.sort(sortArr); console.log('sortedArr1', sortedArr1); // returns sorted array console.log('sortedArr2', sortedArr2); // returns original array (not sorting)¿Alguien puede ayudar a descubrir las formas correctas de ordenar arr2 por segundos valores correctamente? ¡Gracias!
La resta solo funciona como la función de comparación cuando comparas números. Necesita una función de comparación que funcione tanto con números como con cadenas.
function sortArr(a, b) { if (a == b) { return 0; else if (a < b) { return -1; } else { return 1; } }