У меня есть объект, как этот { Алексы: 1, Джон: 5, Билл: 2 }Сортировка объекта с JS
Мне нужно сортировать по значению, от большого к малому, но Я не понимаю, как это сделать. Есть идеи?
У меня есть объект, как этот { Алексы: 1, Джон: 5, Билл: 2 }Сортировка объекта с JS
Мне нужно сортировать по значению, от большого к малому, но Я не понимаю, как это сделать. Есть идеи?
var objUnordered = { alexa: 1, John: 5, Bill: 2 };
var objOrdered = {};
var sortable = [];
for (var element in objUnordered){
sortable.push([element, objUnordered[element]]);
}
sortable.sort(function(a, b) {return a[1] - b[1]})
for(var key in sortable){
objOrdered[sortable[key][0]] = sortable[key][1];
}
console.log(objOrdered); //print this -> Object { alexa=1, Bill=2, John=5}
Это сработало, спасибо soooo много !!! – user3474502
Вы все еще можете получить массив ключей сортируется - то просто цикл массив ключей для доступа к вашему объекту в правильном порядке:
var obj = { alexa: 1, John: 5, Bill: 2 };
var sortedKeys = Object.keys(obj).sort(function(a, b) {
return obj[a] - obj[b]
});
sortedKeys.forEach(function(k) {
console.log(obj[k]);
});
Создание массива из объекта:
var sortedArray = Object.keys(obj).sort(function(a, b) {
return obj[a] - obj[b]
}).map(function(k) {
var o = {};
o[k] = obj[k];
return o;
});
Это работает, но результат, который мне нужен, - {Alexa : 1, Bill: 2, John: 5}, и когда он отсортирован, мне нужно знать ключ, который принадлежит каждому числу, потому что значения могут повторяться ... – user3474502
Измените формат на массив, например '[{ имя: 'Alexa', numb: 1}, {name: 'Bill', numb: 2}] ', тогда вы можете отсортировать его и сохранить дорожку – adeneo
@ user3474502 Объекты * не * упорядочены. '{Alexa: 1, Bill: 2, John: 5}' точно так же, как '{Alexa: 1, John: 5, Bill: 2}' и сортировка - это бессмысленный вопрос. –
Вы не хотите. –
Нет объектов в объектах, их нельзя сортировать – adeneo
Если вы имели в виду «распечатать объект с отсортированными элементами», то вы можете (и должны) отредактировать вопрос :) – wil93