Как я мог бы отсортировать эти значения

#javascript #node.js #json #sorting

Вопрос:

Я пытаюсь провести классификацию для своего веб-сайта в express, но для этого я хотел бы отсортировать свою ценность от наиболее понравившейся до наименее понравившейся:

 user123: 0
user987: 4
user769: 3
 

и после того, как получите:

 user987: 4
user769: 3
user123: 0
 

для этого я старался

 classement.sort(function(a, b) {
return a.val - b.val;
})
 

но это не сработало с classement.sort is not a function ошибкой as

вот как выглядит мой json:

 {
  '60e300f77c30186d545b2db3': 5,
  '60e301c4fc57814fd008017c': 2,
  '60e4439ea4025957366959f6': 10,
  '60e443bda402595736695a26': 4
}
 

Комментарии:

1. .sort работает с массивами, а не с объектами. Преобразуйте свой ответ JSON в массив.

2. и нет доступных .val

3. э-э, я забыл отредактировать это, но thx @zhulien это сработало !

Ответ №1:

Вы пытаетесь вызвать метод массива .sort для объекта. Сначала вы должны преобразовать свой ответ JSON в массив. Кроме того, поскольку объекты вашего объекта имеют разные имена ключей, вам придется выполнить дополнительное сопоставление, чтобы правильно его обработать. У тебя нет val собственности.

Кроме того, ваша функция сортировки должна быть отменена, так как вы хотите сортировать по убыванию.

Взгляните на это решение и измените его по своему усмотрению:

 const jsonResponse = {
  '60e300f77c30186d545b2db3': 5,
  '60e301c4fc57814fd008017c': 2,
  '60e4439ea4025957366959f6': 10,
  '60e443bda402595736695a26': 4
};

const array = [];

Object.entries(jsonResponse).forEach(item => array.push({
  key: item[0],
  value: item[1]
}));

array.sort((a, b) => {
    return b.value - a.value;
});
 

Комментарии:

1. в любом случае, на самом деле нет причин для этого, так как он автоматически сортируется после установки объекта.

2. @Джейк Автоматически сортирует что?

3. Я имею в виду объект

4. @Джейк, я не понимаю, о чем ты говоришь. Не могли бы вы объяснить, пожалуйста?

5. Я имею в виду, sortedArray что объект-это то же самое, что и объект, с которого вы начали