6

次のようなオブジェクトを持つオブジェクトの配列MyArrayOfItemsがあります。Item

Item
{
  ContainerID: i, // int
  ContainerName: 'SomeName', // string
  ItemID: j, // int
  ItemName: 'SomeOtherName' // string
}

この配列を並べ替えてContainerIDItemNameアルファベット順に並べ替えたいと思います。

これまでのところ、次のようなカスタムソート機能があります。

function CustomSort(a, b) {

  Item1 = a['ContainerID'];
  Item2 = b['ContainerID'];

  return Item1 - Item2;
}

MyArrayOfItems.sort(CustomSort);

これは ContainerID で並べ替えますが、ItemName で並べ替えるにはどうすればよいですか?

ありがとう。

4

2 に答える 2

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ます。

于 2012-05-01T20:25:45.047 に答える
5
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;
  }
}
于 2012-05-01T20:28:06.680 に答える