关于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));
}
在我遍历数组时对它进行排序后,最高价格在第一个,其余的都没有排序。 有什么我做错了吗? 如果有人能解释代码中是否有任何问题,我将非常感激。
答案 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
属性。