javascript排序数组双排序
我有一个数组javascript排序数组双排序,javascript,Javascript,我有一个数组MyArrayFitems的Item对象,其中的对象如下所示: Item { ContainerID: i, // int ContainerName: 'SomeName', // string ItemID: j, // int ItemName: 'SomeOtherName' // string } function CustomSort(a, b) { Item1 = a['ContainerID']; Item2 = b['ContainerI
MyArrayFitems
的Item
对象,其中的对象如下所示:
Item
{
ContainerID: i, // int
ContainerName: 'SomeName', // string
ItemID: j, // int
ItemName: 'SomeOtherName' // string
}
function CustomSort(a, b) {
Item1 = a['ContainerID'];
Item2 = b['ContainerID'];
return Item1 - Item2;
}
MyArrayOfItems.sort(CustomSort);
我想对这个数组进行排序,使其按ContainerID
排序,然后按ItemName
字母顺序排序
到目前为止,我有一个自定义排序函数,如下所示:
Item
{
ContainerID: i, // int
ContainerName: 'SomeName', // string
ItemID: j, // int
ItemName: 'SomeOtherName' // string
}
function CustomSort(a, b) {
Item1 = a['ContainerID'];
Item2 = b['ContainerID'];
return Item1 - Item2;
}
MyArrayOfItems.sort(CustomSort);
这是按ContainerID排序的,但如何按ItemName排序
谢谢。使用函数。当a
和b
的ContainerID
相等时使用它
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));
}
}
要调整排序顺序,您可以始终将-
放在任何返回
表达式的前面 功能自定义排序(a、b){
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;
}
}
第1项=a[‘集装箱运输’];
第2项=b[‘集装箱运输’];
如果(项目1-项目2!=0){
返回项目1-项目2;
}
否则{
if(a.ItemNameb.ItemName)
返回1;
返回0;
}
}
可能与@FelixKling重复:不是真的;我需要它按字母顺序排序。那么?您可以轻松地将stings与
进行比较,尽管我同意localCompare
是一种更好的方法。我认为整个问题是关于如何按两个属性排序,在这种情况下,它显然是重复的。它应该。因为它在JavaScript 1.2中非常古老。localcompare是一个很好的选择,但我记得chrome有问题。Item1-Item2=0可以简化为Item1!=第2项
。好的,谢谢菲利克斯;我把项目1放进去了!==第2项使用三重比较器。好的,谢谢;因为它也能起作用,所以投票率上升。不过我更喜欢本地比较。