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项使用三重比较器。好的,谢谢;因为它也能起作用,所以投票率上升。不过我更喜欢本地比较。