Estoy tratando de ordenar una matriz de Javascript. Todos los valores de la matriz son numéricos. Estoy tratando de hacer uso de la función .sort para esto. Pero parece que no funciona cuando tengo cadenas como claves en mi matriz.
Por ejemplo:
// Doesn't work let numbers = []; numbers['a'] = 5; numbers['ld'] = 2; numbers['la'] = 3; numbers.sort((a, b) => { console.log('sort', a,b); // No output return 0; });Pero algo simple como esto funciona.
// Works let numbers2 = [100,10,50]; numbers2.sort((a, b) => { console.log('sort', a,b); return ab; }); console.log(numbers2);Demostración: https://jsfiddle.net/
¿Qué estoy haciendo mal? ¿Cómo puedo ordenar la primera matriz según los valores?
Entonces, básicamente, lo que estoy tratando de lograr es ordenar una matriz de esta manera en función de su valor (ascendente o descendente, no me importa):
numbers['a'] = 5; numbers['la'] = 3; numbers['ld'] = 2;No debe usar cadenas como "claves"/"índices" en una matriz, ya que no se accederá a ellas mediante los métodos de matriz predeterminados. Las matrices utilizan índices numéricos para hacer referencia a un valor. Podría usar un objeto como almacenamiento de valor clave. En los objetos, puede usar cadenas como claves para hacer referencia a un valor. A continuación, puede ordenar el objeto de la siguiente manera.
let numbers = {}; numbers["a"] = 5; numbers["ld"] = 2; numbers["la"] = 3; numbers = Object.fromEntries(Object.entries(numbers).sort((a, b) => { return a[1] - b[1] }));