Me dieron una matriz para ordenar, pero después de ordenar la matriz, un elemento en particular debería aparecer antes que otro.
var array = ['Jack', 'Queen', 'King', 1,3, 2, 4, 5, 6, 7];
la salida debe ser // 1,2,3,4,5,6,7,Jack,Queen,King
En que Reina vendría antes que Rey Mi solución:
var array = ['Jack', 'Queen', 'King', 1,3, 2, 4, 5, 6, 7]; array.sort() console.log(array); ``` But my output is: ```[1, 2, 3, 4, 5, 6, 7, 'Jack', 'King', 'Queen'] ```Asigne Jack , Queen y King a números, ordene la matriz de enteros y luego invierta los números del mapa para Jack , Queen y King .
var array = ['Jack', 'Queen', 'King', 1, 3, 2, 4, 5, 6, 7]; const ans = array .map(x => { if (x === 'Jack') return 10; else if (x === 'Queen') return 11; else if (x === 'King') return 12; return x; }) .sort((a, b) => a - b) .map(x => { if (x === 10) return 'Jack'; else if (x === 11) return 'Queen'; else if (x === 12) return 'King'; return x; }); console.log(ans);La letra Q está después de la letra K en el alfabeto. Por lo tanto, la clasificación funciona correctamente (por letras en orden alfabético). Si desea que se clasifique de otra manera, debe crear una clasificación personalizada.
Mire la sección de comparación aquí: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort y también sugeriría ir con un enfoque diferente de tener la matriz de mapas con el " cards" porque creo que eso es lo que quieres ordenar correctamente y solo comparar los índices de esa matriz o mapa de valores clave. Ejemplo con función de comparación personalizada y mapa de valores de tarjeta.
const cardValueMap = { 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, Jack: 11, Queen: 12, King: 13, Ace: 14, } const array = ['Jack', 'Queen', 'King', 3, 2, 4, 5, 6, 7] const compareCards = (a, b) => { if (cardValueMap[a] < cardValueMap[b]) { return -1 } if (cardValueMap[a] > cardValueMap[b]) { return 1 } return 0 } array.sort(compareCards) console.log(array) Podría actualizarse marcando typeof a / typeof b para no tener que incluir números en el mapa.
Tenga en cuenta que también eliminé "1" de su matriz ya que no hay ninguna tarjeta con el número 1.