2016-08-29 21 views
5

sort()がどのように正確に動作し、どのように使用するのかを理解しようとしています。sort()、sort(function(a、b){return a-b;})の違い。

私はいくつかの研究(Google)を行い、ここでstackoverflowで同様の質問を行ってきましたが、まだ100%明確ではないいくつかのことがあります。

だから、これまで私の理解は以下の通りです:

あります

ソート()のパラメータなし:種類文字列の唯一の単純な配列アルファベット順に値昇順ために

例パラメータとしての機能を有する

// sort alphabetically and ascending: 
var myArr=["Bob", "Bully", "Amy"] 
myArr.sort() // Array now becomes ["Amy", "Bob", "Bully"] 


ソート():その特性に応じてアレイ内のオブジェクトをソートします。項目は、しかしながら、パラメータとしての機能を有する番号

myArr.sort(function(a,b) { 
    return a - b; 
}); 


ソート()のように比較される。それらの特性に応じてアレイ内のオブジェクトをソートします。商品番号又はストリング

myArr.sort(function(a, b) { 
    if (a.sortnumber < b.sortnumber) return -1; 
    else if (a.sortnumber > b.sortnumber) return 1; 
    return 0; 
}); 


ことができる私はすべてのこれら3ソート()関数で次の配列をソートしてみました。

var myArr = [{ 
 
    "sortnumber": 9, 
 
    "name": "Bob" 
 
}, 
 
{ 
 
    "sortnumber": 5, 
 
    "name": "Alice" 
 
}, 
 
{ 
 
    "sortnumber": 4, 
 
    "name": "John" 
 
}, 
 
{ 
 
    "sortnumber": 3, 
 
    "name": "James" 
 
}, 
 
{ 
 
    "sortnumber": 7, 
 
    "name": "Peter" 
 
}, 
 
{ 
 
    "sortnumber": 6, 
 
    "name": "Doug" 
 
}, 
 
{ 
 
    "sortnumber": 2, 
 
    "name": "Stacey" 
 
}]; 
 

 
//myArr.sort(); // doesn't do anything since it doesn't know on what property to sort 
 

 
/* 
 
myArr.sort(function(a, b) { 
 
    return (a.sortnumber - b.sortnumber); // sorts array 
 
    return (a.name - b.name); // doesn't sort array 
 
}); 
 
*/ 
 

 
/* 
 
// sorts array even when I use name as property to sort on 
 
myArr.sort(function(a, b) { 
 
    if (a.sortnumber < b.sortnumber) return -1; 
 
    else if (a.sortnumber > b.sortnumber) return 1; 
 
    return 0; 
 
}); 
 
*/ 
 

 

 
console.log(myArr);

Hereもフィドルです。

だから、私の質問は以下のとおりです。

  1. が私の理解は正しいですか?
  2. 紛失しているものはありますか?
  3. 3番目のケースが常に動作する場合は、常にそれに固執することができますか、 他の2つのケースは何らかの方法で効率的ですか、 3番目のケースに利点がありますか?

上記のことを誰かが詳しく説明できれば、本当にありがたいです。ありがとうございました。すべての

+0

古いIEブラウザをサポートする必要がある場合は、第1または第3の方法を使用してください。 – Maris

+0

_私は行方不明のものがありますか?_そのような質問は話題にはなりません。ここでは、**具体的な**問題のみを扱います。 – hindmost

+1

@hindmost:指定されたトピックに欠けている特定のものはありますか?その質問はどのように読むべきかです。 – Setily

答えて