Если у меня есть объект 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,
};
Это недопустимый объект из-за дублирования ключей; у вас нет объекта, как показано
Ключи объекта не отсортированы по дизайну. Если вам нужен порядок, используйте Array или Map.
Список объектов, моя ошибка
пожалуйста, добавьте правило сортировки и реальный массив, который у вас есть.
Сначала по следующему правилу ("EUR", "USD", "GBP", "CHF", "JPN"), а затем по значению
Если вы просто наберете это в консоли, вы увидите, что объект недействителен, и вы потеряете значения дубликатов ключей. Также ключи объекта сейчас не сортируются, вам нужен массив.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Имея массив с объектами с одной парой ключ/значение, вы можете взять эту пару для сортировки по ключу, а затем по значению.
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; }
Зачем сортировать объект в первую очередь?