Сортировка объекта JavaScript по определенному значению свойства

Если у меня есть объект JavaScript, например:

var currencies= {
  "EUR": 100, 
  "CHF": 15,
  "GPB": 75, 
  "JPN": 116, 
  "EUR": 12, 
  "JPN": 15, 
  "USD": 55, 
  "CHF": 22,
  "USD": 100, 
};

Есть ли способ отсортировать их в этом конкретном порядке?

var currencies= {
  "EUR": 12, 
  "EUR": 100, 
  "USD": 55, 
  "USD": 100, 
  "GPB": 75, 
  "CHF": 15,
  "CHF": 22,
  "JPN": 15, 
  "JPN": 116, 
};

Зачем сортировать объект в первую очередь?

dporechny 06.03.2019 10:02

Это недопустимый объект из-за дублирования ключей; у вас нет объекта, как показано

baao 06.03.2019 10:02

Ключи объекта не отсортированы по дизайну. Если вам нужен порядок, используйте Array или Map.

Yury Tarabanko 06.03.2019 10:03

Список объектов, моя ошибка

Vasil Karakulev 06.03.2019 10:04

пожалуйста, добавьте правило сортировки и реальный массив, который у вас есть.

Nina Scholz 06.03.2019 10:08

Сначала по следующему правилу ("EUR", "USD", "GBP", "CHF", "JPN"), а затем по значению

Vasil Karakulev 06.03.2019 10:10

Если вы просто наберете это в консоли, вы увидите, что объект недействителен, и вы потеряете значения дубликатов ключей. Также ключи объекта сейчас не сортируются, вам нужен массив.

Roberto Zvjerković 06.03.2019 10:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
5
7
41
1

Ответы 1

Имея массив с объектами с одной парой ключ/значение, вы можете взять эту пару для сортировки по ключу, а затем по значению.

var currencies= [{ EUR: 100 }, { CHF: 15 }, { GPB: 75 }, { JPN: 116 }, { EUR: 12 }, { JPN: 15 }, { USD: 55 }, { CHF: 22 }, { USD: 100 }],
    order = { EUR: 1, USD: 2, GBP: 3, CHF: 4, JPN: 5 };

currencies.sort((a, b) => {
    var aa = Object.entries(a)[0],
        bb = Object.entries(b)[0];

    return order[aa[0]] - order[bb[0]] || aa[1] - bb[1];
});

console.info(currencies);
.as-console-wrapper { max-height: 100% !important; top: 0; }

Другие вопросы по теме