Сообщение от 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) в данном случае не даст поместить в туда все данные только часть разве нет?