Me enfrento a un problema en el que obtengo resultados de la API (principalmente una matriz de números), pero si los desarrolladores cometen un error y dejan el campo vacío, obtendré una cadena vacía (""). Estoy tratando de ordenar esta matriz en orden ascendente y mover las cadenas vacías en la parte posterior de la matriz, así:
let arr = [3, 4, "", 1, 5, 2] // Example Array from apiEsta matriz, cuando se modifica, debe convertirse en:
let res = [1, 2, 3, 4, 5, ""]Intenté usar el método arr.sort(), pero los resultados se ven así:
let res = ["",1 ,2 ,3 ,4 ,5]Por alguna razón, cuando el elemento es una cadena, el método de clasificación lo coloca al frente, no al final como lo hace con undefined o null, por ejemplo.
let arr = [3, 4, "", 1, 5, 2]; const res = arr.sort((a, b) => { if (typeof a === 'string') { return 1; } else if (typeof b === 'string') { return -1; } else { return a - b; } } ); console.log(res)Producción:
[ 1, 2, 3, 4, 5, '' ] const res = (arr) => { let newArr = []; let strArr = []; for (let i = 0; i < arr.length; i++) { if (typeof arr[i] === 'string') { strArr.push(arr[i]); } else { newArr.push(arr[i]); } } return newArr.concat(strArr); } console.log(res(arr));