2010-09-13 3 views
2

У меня есть небольшой вопрос относительно сортировки массива JavaScript.Как отсортировать массив hashmaps в javascript

У меня есть массив, который содержит в основном хэш-карту: dataOfTheUserArray=new Array(6);, которая в основном представляет собой массив hashmaps. Карта выглядит следующим образом:

keys:    values 

Symbol    xyz 
NumberOfStocks  1o 
Price    200 

Так массив в основном содержит карту для каждого символа.

Теперь я хочу отсортировать массив по цене запаса. Так что я сделал:

dataOfTheUserArray.sort(sortByPriceBought); 

//The call back function is 
function sortByPriceBought(a, b) { 

    var x = a.Price; 
    var y = b.Price; 
    return ((x >y) ? -1 : ((x < y) ? 1 : 0)); 
} 

После сортировки, когда я итерацию по массиву самая высокая цена в первом, и все остальное не сортируется. Есть ли что-то, что я делаю неправильно? Я был бы очень признателен, если кто-нибудь сможет объяснить, если что-то пошло не так в коде.

ответ

3

Если свойство, a.Price является строковым объектом, упорядочение выполняется лексически.

Изменение кода следующим образом может решить вашу проблему:

var x = parseInt(a.Price); 
var y = parseInt(b.Price); 
3

Вы можете упростить функцию сортировки с использованием - вместо условий:

function sortByPriceBought(a, b) { 
    return b.Price - a.Price; 
} 

Убедитесь, чем все элементы массива имеют Price имущество.