Tengo el siguiente arreglo de objetos, el cual quisiera ordenar por nombre, o por cualquier otra columna y танго la siguiente función, pero никакой sirve muy bien
var array = [
[
{Nombre: "ALBANIA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "BARRANCAS", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "EL PRADO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "OLAYA HERRERA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "METROPOLITANO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "GRAN BOULEVARD", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "EL RODADERO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "CENTRO COMERCIAL UNICO BARRANQUILLA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "SAO 93", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "SAN FRANCISCO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "FONSECA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "EL VIVERO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "CALLE 76", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "GRANCENTRO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "RIOHACHA CENTRO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "CARRERA 43", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "PALMA REAL", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "BANCA PERSONAL BARRANQUILLA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "MURILLO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "SMART OFFICE", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "BAHIA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "SANTA MARTA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "SOLEDAD", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "CENTRO COMERCIAL BUENAVISTA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "GREEN TOWERS", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"}
]
];
var newArray = [];
array.forEach(elemento => {
newArray.push(elemento.sort((a, b) => a.Nombre.localeCompare(b.Nombre) ? -1 : a.Nombre.localeCompare(b.Nombre) ? 1 : 0));
});
console.log(newArray);
Из-за шагов:
Упорядочивать array - просто, только ты нуждаешься в том, чтобы переместить в метод sort()
функцию распорядка типа (в псевдокоде):
function compare(obj1, obj1) {
if (obj1 > obj2) {
return 1;
}
if (obj1 < obj2) {
return -1;
}
return 0; //iguales
}
, Но то, что ты хочешь, состоит в том, чтобы добавлять третий параметр, который является типом распорядка:
function compare(attr, obj1, obj1) {
if (obj1[attr] > obj2[attr]) {
return 1;
}
if (obj1[attr] < obj2[attr]) {
return -1;
}
return 0; //iguales
}
, Но это не функционировало бы, потому что он не выполняет интерфейс, который просит метод sort
, так что мы можем использовать currificación : Суммируя все это у нас остался бы
function generaComparador(attr) {
return function (a,b) {
return compare(attr,a,b);
}
}
:
var array = [
{Nombre: "ALBANIA", Ejecutado: "2.0", Meta: "0"},
{Nombre: "BARRANCAS", Ejecutado: "1.0", Meta: "1"},
{Nombre: "EL PRADO", Ejecutado: "0.0", Meta: "4"},
{Nombre: "OLAYA HERRERA", Ejecutado: "3.0", Meta: "2"},
{Nombre: "METROPOLITANO", Ejecutado: "0.5", Meta: "3"}
];
function compare(attr, obj1, obj2) {
return obj1[attr].localeCompare(obj2[attr]);
}
function generaComparador(attr) {
return function (a,b) {
return compare(attr,a,b);
}
}
console.log('Por nombre:', array.sort(generaComparador('Nombre')));
console.log('Por Ejecutado', array.sort(generaComparador('Ejecutado')));
Быстрый выбор, чтобы мочь упорядочивать коллекции, - используя так называемый книжный магазин lodash . Метод sortBy
позволяет перемещать его коллекцию и имя элемента, из-за которого ты хочешь повторить
var array = [
{Nombre: "ALBANIA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "BARRANCAS", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "EL PRADO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "OLAYA HERRERA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "METROPOLITANO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "GRAN BOULEVARD", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "EL RODADERO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "CENTRO COMERCIAL UNICO BARRANQUILLA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "SAO 93", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "SAN FRANCISCO", Ejecutado: "0.0", Meta: "100", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "FONSECA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "EL VIVERO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "CALLE 76", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "GRANCENTRO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "RIOHACHA CENTRO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "CARRERA 43", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "PALMA REAL", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "BANCA PERSONAL BARRANQUILLA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "MURILLO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "SMART OFFICE", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "BAHIA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "SANTA MARTA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "SOLEDAD", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "CENTRO COMERCIAL BUENAVISTA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "GREEN TOWERS", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"}
];
var array_ordenado = _.sortBy(array, ['Nombre']);
console.log(array_ordenado)
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
Vero, что ты сохранял array 25 типов стоимости внутри другого array. Сначала ты должен прекращаться отсюда: Пример:
arreglo = array[0]
Сейчас выполняет функцию sort в так называемый array я упорядочиваю , следующей формы:
arreglo.sort(function (a, b){
if ( a.Nombre < b.Nombre )
return -1;
if ( a.Nombre > b.Nombre )
return 1;
return 0;
})
array упорядочил сейчас уже сталкиваются упорядоченным из-за nombe, благосклонность, обрезал ли ты пытаться.
чтобы это делать я использовал бы следующий код:
var x = "Nombre";
var ascendente = true;
if(ascendente)
{
array.sort(function(a,b) {return (isNaN(a) && isNaN(b))?((a[x] > b[x]) ? 1 : ((b[x] > a[x]) ? -1 : 0)):(a - b);} );
}
else
{
array.sort(function(a,b) {return (isNaN(a) && isNaN(b))?((a[x] < b[x]) ? 1 : ((b[x] < a[x]) ? -1 : 0)):(b - a);} );
}
, будучи переменной x
имя свойства из-за того, что которого упорядочивая. и переменная ascendente
, которая будет позволять приказывать тебе восходящей формы, true
ли его и нисходящий, если его false
.
ты можешь делать это так:
var array = [
[
{Nombre: "ALBANIA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "BARRANCAS", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "EL PRADO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "OLAYA HERRERA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "METROPOLITANO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "GRAN BOULEVARD", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "EL RODADERO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "CENTRO COMERCIAL UNICO BARRANQUILLA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "SAO 93", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "SAN FRANCISCO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "FONSECA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "EL VIVERO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "CALLE 76", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "GRANCENTRO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "RIOHACHA CENTRO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "CARRERA 43", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "PALMA REAL", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "BANCA PERSONAL BARRANQUILLA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "MURILLO", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "SMART OFFICE", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "BAHIA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "SANTA MARTA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "SOLEDAD", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "CENTRO COMERCIAL BUENAVISTA", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"},
{Nombre: "GREEN TOWERS", Ejecutado: "0.0", Meta: "0", Cumplimiento: "0.00%", Fábrica: "0 und"}
]
];
let newArray = array[0].sort((a, b)=> a.Nombre.localeCompare(b.Nombre) );
//console.table(newArray)
console.log(newArray)