2015-08-14 4 views
0

Я пытаюсь заказать массив. Я попытался следующий код:Порядок Javascript в массиве

var groupUserCounter=[]; 
groupUserCounter["g1"]=1; 
groupUserCounter["g2"]=2; 
groupUserCounter["g3"]=3; 

console.log(groupUserCounter.sort(function(a, b){return b-a})); 

вернулся:

Array [ ] 

Как я сходил заказ?

+1

Вы добавили некоторые свойства к вашему объекту массива. Индексы массива должны быть числами. – Teemu

+0

Что вы предлагаете? Я не могу удалить свойства –

+1

'groupUserCounter.push()' вместо назначения свойств. – Shilly

ответ

5

Ваша проблема заключается в том, что вы пытаетесь смешивать массивы и объекты так, как они не работают. Попробуйте толкая объекты в массив так:

var groupUserCounter = []; 
groupUserCounter.push({'g1':1}); 
groupUserCounter.push({'g2':2}); 
groupUserCounter.push({'g3':3}); 
groupUserCounter.sort(function(a, b){ 
    var propA = Object.keys(a)[0], 
     propB = Object.keys(b)[0]; 
    return b[propB] - a[propA]; 
}); 

Или просто использовать объект в целом и написать функцию сортировки на основе вокруг Object.keys (yourKeyValueObject), как RGraham любезно показывает ниже.

+0

Он подталкивает объекты (пару ключ/значение) к массиву, поэтому вы можете использовать функцию сортировки массивов. Затем он проверяет первое свойство каждого объекта в массиве и возвращает разность между значением свойства в b и свойством в a. – Shilly

Смежные вопросы