2011-08-04 9 views
1

プロパティを持つオブジェクトの配列があり、オブジェクトを特定のプロパティで並べ替えるにはどうしたらいいですか?たとえば、私はdateプロパティを持つnewsオブジェクトの束をそれぞれ持っていたとしましょう。オブジェクトのプロパティを使用してオブジェクトの配列を並べ替える方法

どのようにして各オブジェクトをjavascriptで日付順に並べ替えることができますか?

+0

これまでに何度も何度も尋ねられてきました。 –

答えて

3

あなたの配列がある場合はARR:あなたは、.sort()にこのようなものを独自の関数を渡す必要があります

arr.sort(function(a,b) { 
    return (a.date < b.date ? -1 : (a.date > b.date ? 1 : 0)); 
}); 
+0

「データ」ではなく「日付」を意味するのですか? – locoboy

+0

ええ、私はそれを固定 –

+0

これらの外側の括弧は本当に必要ですか? –

0

someArray.sort(function(a, b) { 
    if (a.date < b.date) 
    return -1; 
    else if (a.date > b.date) 
    return 1; 
    return 0; 
}); 
あなたの関数はただ与えられた任意の二つを比較できるようにする必要があり

オブジェクトは、どちらが最初に来るかに応じて負または正の値を返し、等しい場合はゼロを返します。 .sort()関数は残りの部分を処理します。

これは、好きなオブジェクトの任意のプロパティを並べ替えることができ、最初のプロパティが等しい場合にセカンダリソートを導入することもできます(オプション)。戻り値を無効にするだけで、昇順と降順を制御することもできます。

+0

おそらく、トップのバナーにもっと注意を払って、別の回答が投稿されたことを伝えてください。ああ、私はコードと一緒に簡単な説明をしたので、私は挑戦しています。 – nnnnnn

0

あなたは配列のソート方法にsort functionを供給することができます:

// Sample data 
var newsArray = [ 
    {date: '2010/8/12'}, 
    {date: '2012/8/10'}, 
    {date: '2011/8/19'} 
]; 

// Sorting function 
function sortNewsArray(arr) { 
    return arr.sort(function(a, b) { 
     return new Date(a.date) - new Date(b.date); 
    } 
); 
} 

は、日付文字列は、単に日付に変換することができます提供。そうでない場合は、データまたはソート機能のいずれかでできるように再フォーマットしてください。

オリジナルオーダー:

  1. 2010年8月12日
  2. 2012年8月10日
  3. 2011年8月19日

ソート順:

  1. 2010/8/12
  2. 2011/8/19
  3. 2012/8/10
関連する問題