Сортировка ключей объекта в JavaScript по значению - PullRequest
0 голосов
/ 27 февраля 2019

Я получаю странный ответ от стороннего API, который выглядит следующим образом

{
  "27000CE": -1,
  "27100CE": 2,
  "27300CE": -1,
  "27200CE": 5
}

Как мне отсортировать это по значению?

как по возрастанию или по убыванию.

{
  "27300CE": -1,
  "27000CE": -1,
  "27100CE": 2,
  "27200CE": 5
}

Я пробовал что-то вроде ниже

sortArrayOfObjects = (arr, key) => {
    return arr.sort((a, b) => {
        return a[key] - b[key];
    });
};

Но все ключи разные, и в этом проблема.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы можете отсортировать Object.entries и затем создать новый объект, используя reduce следующим образом:

const response = {
  "27100CE": 2,
  "27000CE": -1,
  "27300CE": -1,
  "27200CE": 5
}

const sorted = Object.entries(response)
                         .sort((a, b) => a[1] - b[1])
                         .reduce((r, [key, value]) => {
                            r[key] = value
                            return r
                         }, {})

console.log(sorted)

Это работает, только если у вас нет целочисленных клавиш в response.Дополнительная информация: Гарантирует ли JavaScript порядок объекта недвижимости?

0 голосов
/ 27 февраля 2019

Я полагаю, вы получите объект, в этом случае ваш ввод будет выглядеть следующим образом:

let obj = {"27300CE": -1, "27200CE": 5, "27100CE": 2, "27000CE": -1}

И вы можете сортировать по таким значениям:

let keys = Object.keys(obj);

// Then sort by using the keys to lookup the values in the original object:
keys.sort(function(a, b) { return obj[a] - obj[b] });

console.log(keys);//["27300CE", "27000CE", "27100CE", "27200CE"]

на основе новыхпоследовательность клавиш вы можете создать новый объект, отсортированный, если вам нравится

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