如何在javascript中对一组哈希映射进行排序

时间:2010-09-13 22:16:16

标签: javascript

关于JavaScript数组的排序,我有一个小问题。

我有一个数组,它基本上保存了一个hashmap: dataOfTheUserArray=new Array(6);,基本上是一个哈希映射数组。 地图如下所示:

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));
}

在我遍历数组时对它进行排序后,最高价格在第一个,其余的都没有排序。 有什么我做错了吗? 如果有人能解释代码中是否有任何问题,我将非常感激。

2 个答案:

答案 0 :(得分:3)

如果属性,a.Price是一个字符串对象,则按词汇顺序排序。

如下更改代码可能会解决您的问题:

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

答案 1 :(得分:3)

您可以使用-而不是条件来简化排序功能:

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

确保数组的所有元素都具有Price属性。