javascript排序数组双排序

时间:2012-05-01 20:21:04

标签: javascript

我有一个MyArrayOfItemsItem个对象,其对象看起来像这样:

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排序?

感谢。

2 个答案:

答案 0 :(得分:6)

使用String.localeCompare功能。并在ContainerID ab相等时使用它。

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