Tengo una matriz. Si el valor del nombre está vacío, necesito cambiarlo al final de la matriz, ¿cómo puedo hacer eso en Javascript?
ex:
const data : [ { id:0, name:"gorkem" } { id:1, name:"" } { id:2, name:"ahmet" } ];Reemplazar
const data : [ { id:0, name:"gorkem" } { id:2, name:"ahmet" } { id:1, name:"" } ];Use dos llamadas para filtrar, una para obtener los elementos con un nombre que no esté vacío y la otra con los nombres vacíos. Luego concatene estas dos matrices.
let non_empty = data.filter(el => el.name); let empty = data.filter(el => !el.name); let result = non_empty.concat(empty);En primer lugar, debe tener una matriz válida:
const data = [{ id:0, name:"gorkem" }, { id:1, name:"" }, { id:2, name:"ahmet" }];Entonces, comenzando con eso, puede usar un bucle para eliminar el elemento de nombre vacío y agregarlo al final:
for (let i = 0; i < data.length; i++) { if (data[i].name === '') { let val = data[i]; data.splice(i, 1); data.push(val); } }Simplemente puede ordenar la matriz en función de la "veracidad" del "nombre".
const data = [{ id:0, name:"gorkem" }, { id:1, name:"" }, { id:2, name:"ahmet" }]; console.log(data.sort((a,b)=>!a.name - !b.name));Arriba, básicamente estamos abusando del hecho de que una cadena vacía es un valor falso que equivale a 0, mientras que una cadena no vacía es verdadera, que equivale a 1. Cada uno se niega con un "!" para obtener el orden de clasificación inverso que está buscando y tratarlos realmente como booleanos.
resultado :
[ { "id": 0, "name": "gorkem" }, { "id": 2, "name": "ahmet" }, { "id": 1, "name": "" } ]