Tengo una matriz que estoy tratando de ordenar según los tamaños del mundo real.
["s", "m", "l", "xl", "xxl", "xs"].sort(function(a,b){ if(a === "xs") });Obtengo esta matriz como respuesta y tengo que modificarla en el front-end. Intenté solucionarlo, pero no puedo encontrar las condiciones adecuadas para hacer. ¿Qué debo hacer para que la matriz se ordene en este orden?
["xs","s", "m", "l", "xl", "xxl"]Incluso si falta algún tamaño, debe estar en el orden correcto, por ejemplo, si el tamaño mediano no está disponible, debe estar en el orden correcto.
["xs","s", "l", "xl", "xxl"]Use la posición de índice de una matriz ordenada:
const order = ["xs", "s", "m", "l", "xl", "xxl"]; const orderedArray = ["s", "m", "l", "xl", "xxl", "xs"].sort((a, b) => { return order.indexOf(a) - order.indexOf(b) }) console.log(orderedArray) // ["xs", "s", "m", "l", "xl", "xxl"]Comience creando una matriz de objetos, con los tamaños correspondientes:
var sizes = [ { size: 'xs', value: 0}, { size: 's', value: 1}, { size: 'm', value: 2}, { size: 'l', value: 3}, { size: 'xl', value: 4}, { size: 'xxl', value: 5} ];Luego ordene según los valores:
// sort by value sizes.sort(function (a, b) { return a.value - b.value; });Puede usar un objeto aquí como un diccionario.
Obtener datos de un objeto es mucho mejor que una matriz
const sizes = { xs: 100, s: 200, m: 300, l: 400, xl: 500, xxl: 600, }; const arr = ["s", "m", "l", "xl", "xxl", "xs"]; const result = arr.sort((a, b) => sizes[a] - sizes[b]); console.log(result);