我有一个MyArrayOfItems
个Item
个对象,其对象看起来像这样:
Item
{
ContainerID: i, // int
ContainerName: 'SomeName', // string
ItemID: j, // int
ItemName: 'SomeOtherName' // string
}
我想对此数组进行排序,使其按ContainerID
排序,然后按字母顺序排列ItemName
。
我有一个自定义排序功能,到目前为止看起来像这样:
function CustomSort(a, b) {
Item1 = a['ContainerID'];
Item2 = b['ContainerID'];
return Item1 - Item2;
}
MyArrayOfItems.sort(CustomSort);
这是按ContainerID排序的,但我如何按ItemName排序?
感谢。
答案 0 :(得分:6)
使用String.localeCompare功能。并在ContainerID
a
和b
相等时使用它。
function CustomSort(a, b) {
var Item1 = a['ContainerID'];
var Item2 = b['ContainerID'];
if(Item1 != Item2){
return (Item1 - Item2);
}
else{
return (a.ItemName.localeCompare(b.ItemName));
}
}
要调整排序顺序,您始终可以将-
放在任何return
表达式前面。
答案 1 :(得分:4)
function CustomSort(a, b) {
Item1 = a['ContainerID'];
Item2 = b['ContainerID'];
if(Item1 - Item2 !=0){
return Item1 - Item2;
}
else{
if (a.ItemName < b.ItemName)
return -1;
if (a.ItemName > b.ItemName)
return 1;
return 0;
}
}