Saltar al contenido

Ordenar Javascript array de objetos por una propiedad booleana

Te damos el arreglo a esta incógnita, o por lo menos eso creemos. Si continuas con preguntas dínoslo, que sin tardanza

Solución:

a = [false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false];
    
    
    a.sort(function(x, y) 
        // true values first
        return (x === y)? 0 : x? -1 : 1;
        // false values first
        // return (x === y)? 0 : x? 1 : -1;
    );
    
    console.log(a);

Debe devolver 0 cuando a y b tienen el mismo valor, -1 si a es true y 1 en caso contrario.

una manera más simple:

a = [xx:true,xx:false,xx:true,xx:false,xx:true,xx:false,xx:true,xx:false,xx:true,xx:false,xx:true,xx:false,xx:true,xx:false,xx:true,xx:false,xx:true,xx:false];

a.sort(function(a,b)return a.xx-b.xx);

console.log(a);

puede llamar a.reverse() después de sort() si desea que se ordene de otra manera.

EDITAR: editado para reflejar la pregunta actualizada de ordenar un array de objetos en lugar de un array de booleanos.

Para evitar la conversión de tipo implícita (que no les gusta a los lenguajes como TypeScript), puede usar Number() para convertir explícitamente el valor booleano en un número:

a = [false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false];
a.sort(function(x, y) 
   return Number(x) - Number(y);
);
console.log(a);

O usando funciones de flecha:

a = [false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false];
a.sort((x, y) => Number(x) - Number(y));
console.log(a);

Comentarios y puntuaciones del tutorial

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *