Показать сообщение отдельно
  #29 (permalink)  
Старый 19.01.2018, 13:07
Кандидат Javascript-наук
Отправить личное сообщение для Cache Посмотреть профиль Найти все сообщения от Cache
 
Регистрация: 02.05.2013
Сообщений: 111

Сообщение от Aetae Посмотреть сообщение
var result = arr
.sort(function(a, b){
   return b.v2 - a.v2
}) //сортируем по убыванию v2 
.slice(0, 20) //отрезаем верхние 20
.reduce(function(a, b) {
   return a[b.id] = b, a;
}, {}); //набиваем новый объект, где ключами - id

alert(JSON.stringify(result,0,'\t'));
Как видно, независимо от добавления порядок ключей в новом объекте отсортирован по возрастанию и с этим ничего не сделать ибо стандарт. Так что либо удобное обращение по result[id] либо нужный порядок пр итерации.
если я правильно понял, вы предлагаете хранить как массив, в том виде что есть сейчас. так и объект для обращения по ключу?
не оптимально, мне кажется, будет занимать в памяти в 2 раза больше места, при том что вложенных объектов около 300 шт и может быть больше
к тому же .slice(0, 20) в данном случае не даст поместить в туда все данные только часть разве нет?
Ответить с цитированием