Javascript сортировать объект по целому полю - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть массив объектов, для которых одно из полей является целочисленным значением, и я хотел бы отсортировать, используя его поле.

Например:

var myArray = {
    { name: "Robert", age: 47 },
    { name: "Carl", age: 22 },
    { name: "Ronaldo", age: 15 }
};

myArray.sort(function(a, b){ a.age - b.age });

Фактическая программазапускать 24 часа и сортировать массив каждую минуту, иногда он сортируется правильно (без изменений кода), а иногда (большинство из них) выполняет то, что кажется случайной сортировкой.

Желаемый результат будет:

myArray = {
{ name: "Ronaldo", age: 15 },
{ name: "Carl", age: 22 },
{ name: "Robert", age: 47 }
}

но каждый раз, когда я запускаю код, он дает разные порядки, поскольку он не сортируется вообще.

Реальный массив имеет от 0 до 3000 записей, и каждый объект имеет множество свойств.Я не знаю, связано ли это с размером массива или структурой данных.

Уже искали везде, и все говорят, чтобы передать пользовательскую функцию JS для сортировки массива.Затем эта функция сравнивалась бы с «ifs» или вычлала их, но я не могу найти никого, кто бы говорил об этом ...

Я попытался обернуть a.age и b.age в parseInt() и

myArray = myArray.sort(function(a, b){a.age - b.age});

1 Ответ

2 голосов
/ 25 сентября 2019

Вам необходимо вернуть значение из вашей функции.

myArray.sort(function(a, b){ return a.age - b.age });

const myArray = [{
    name: "Ronaldo",
    age: 15
  },
  {
    name: "Carl",
    age: 22
  },
  {
    name: "Robert",
    age: 47
  }
];

const sortedArray = myArray.sort(function(a, b) {
  return a.age - b.age
});

console.log(sortedArray);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...