Ordenar arreglo de objetos por nombre de columna en Javascript

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);
4
задан 20.12.2019, 18:02
5 ответов

Из-за шагов:

Упорядочивать 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')));
3
ответ дан 21.12.2019, 12:12

Быстрый выбор, чтобы мочь упорядочивать коллекции, - используя так называемый книжный магазин 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>
1
ответ дан 21.12.2019, 12:12

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, благосклонность, обрезал ли ты пытаться.

1
ответ дан 21.12.2019, 12:12

чтобы это делать я использовал бы следующий код:

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.

0
ответ дан 21.12.2019, 12:12

ты можешь делать это так:

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)
0
ответ дан 21.12.2019, 12:12