javascript - reorder - Función simple para ordenar una matriz de objetos
sort array of objects javascript (8)
¿Qué tal esto?
var people = [
{
name: ''a75'',
item1: false,
item2: false
},
{
name: ''z32'',
item1: true,
item2: false
},
{
name: ''e77'',
item1: false,
item2: false
}];
function sortByKey(array, key) {
return array.sort(function(a, b) {
var x = a[key]; var y = b[key];
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
});
}
people = sortByKey(people, ''name'');
Esto le permite especificar la clave con la que desea ordenar la matriz para que no esté limitado a una ordenación de nombre codificada. Trabajará para ordenar cualquier conjunto de objetos que todos compartan la propiedad que se utiliza como clave. Creo que eso es lo que estabas buscando?
Y aquí hay un jsFiddle: http://jsfiddle.net/6Dgbu/
Me gustaría crear una función (no anónima) que ordene una matriz de objetos alfabéticamente por el name
la clave. Solo código JavaScript completo para que los marcos no me ayuden en lo más mínimo.
var people = [
{''name'': ''a75'', ''item1'': false, ''item2'': false},
{''name'': ''z32'', ''item1'': true, ''item2'': false},
{''name'': ''e77'', ''item1'': false, ''item2'': false}
];
Esta no es una pregunta JSON, per se. Es una pregunta de javascript array.
Prueba esto:
people.sort(function(a,b){
var x = a.name < b.name? -1:1;
return x;
});
Mi solución para un problema de ordenamiento similar con ECMA 6
var library = [
{name: ''Steve'', course:''WAP'', courseID: ''cs452''},
{name: ''Rakesh'', course:''WAA'', courseID: ''cs545''},
{name: ''Asad'', course:''SWE'', courseID: ''cs542''},
];
const sorted_by_name = library.sort( (a,b) => a.name > b.name );
for(let k in sorted_by_name){
console.log(sorted_by_name[k]);
}
Modifiqué la respuesta de @Geuis usando lambda y la convertí en mayúscula primero:
people.sort((a, b) => a.toLocaleUpperCase() < b.toLocaleUpperCase() ? -1 : 1);
Puede ordenar una matriz ( [...]
) con la función .sort
:
var people = [
{''name'': ''a75'', ''item1'': false, ''item2'': false},
{''name'': ''z32'', ''item1'': true, ''item2'': false},
{''name'': ''e77'', ''item1'': false, ''item2'': false},
];
var sorted = people.sort(function IHaveAName(a, b) { // non-anonymous as you ordered...
return b.name < a.name ? 1 // if b should come earlier, push a to end
: b.name > a.name ? -1 // if b should come later, push a to begin
: 0; // a and b are equal
});
var data = [ 1, 2, 5, 3, 1]; data.sort(function(a,b) { return ab });
Con un pequeño compartimiento y usando sort, podemos hacerlo
var library = [
{name: ''Steve'', course:''WAP'', courseID: ''cs452''},
{name: ''Rakesh'', course:''WAA'', courseID: ''cs545''},
{name: ''Asad'', course:''SWE'', courseID: ''cs542''},
];
const sorted_by_name = library.sort( (a,b) => a.name > b.name );
for(let k in sorted_by_name){
console.log(sorted_by_name[k]);
}
var people =
[{"name": ''a75'',"item1": "false","item2":"false"},
{"name": ''z32'',"item1": "true","item2": "false"},
{"name": ''e77'',"item1": "false","item2": "false"}];
function mycomparator(a,b) { return parseInt(a.name) - parseInt(b.name); }
people.sort(mycomparator);
algo parecido a esto quizás (o como solíamos decir, esto debería funcionar).