Хорошо, как вы, возможно, знаете, в javascript есть функция sort () для сортировки массивов, но ничего для объекта ...
Итак, в этом случае нам нужно каким-то образом получить массив ключей и отсортировать их, поэтому apis большую часть времени предоставляет вам объекты в массиве, потому что Array имеет больше встроенных функций для игры с ними, чем литерал объекта, в любом случае, Быстрое соло использует Object.key, который возвращает массив ключей объекта, я создаю функцию ES6 ниже, которая выполняет эту работу за вас, она использует собственный Функции sort () и reduce () в javascript:
function sortObject(obj) {
return Object.keys(obj)
.sort().reduce((a, v) => {
a[v] = obj[v];
return a; }, {});
}
И теперь вы можете использовать это так:
let myObject = {a: 1, c: 3, e: 5, b: 2, d: 4};
let sortedMyObject = sortObject(myObject);
Проверьте sortedMyObject, и вы увидите результат, отсортированный по следующим ключам:
{a: 1, b: 2, c: 3, d: 4, e: 5}
Также таким образом основной объект не будет затронут, и мы фактически получим новый объект.
Я также создаю изображение ниже, чтобы сделать шаги функции более понятными, на случай, если вам нужно немного изменить его, чтобы он работал по-своему:
02.08.2017
keys()
поддерживается только IE9 + (и другими современными браузерами), если это вызывает беспокойство. Такжеkeys()
исключает перечислимые свойства из цепочки прототипов элементов (в отличие от for..in) - но это обычно более желательно. 28.11.2012_.pairs
превращает объект в [[ключ1, значение1], [ключ2, значение2]]. Затем вызовите сортировку по этому поводу. Затем вызовите_.object
, чтобы вернуть его обратно. 20.02.2014string keys
, вы можете использовать:return a[1] > b[1];
. 20.07.2018var sortedAsObject = {}; sortable.forEach(function(item){sortedAsObject[item[0]]=item[1]})
10.09.2019Object.fromEntries(Object.entries(maxSpeed).sort((a,b) => a[1]-b[1]));
работает? 16.09.2020