2016-10-20 3 views
1

値が大きい順に並べ替える必要があるため、降順(範囲は7-2)になります。現時点では、ソート順を本当に処理しているのか分かりませんが、ロジックがあると仮定してもかなりランダムです。ここでオブジェクトを整数値で並べ替える

は、データの一例のサブセットです:

property_list = { 
    1 : { 
     description : '...', 
     specs : { 
      bedroom_number: 7 
     } 
    }, 
    2 : { 
     description : '...', 
     specs : { 
     bedroom_number: 3 
     } 
    }, 
    3 : { 
     description : '...', 
     specs : { 
      bedroom_number: 5 
     } 
    } 
} 

だから私は、彼らが寝室の数値の面で753として手配されているように、specs.bedroom_numberで並べ替えする必要があります。

この並べ替えは可能ですか?あるいは、オブジェクトを操作して各オブジェクトを新しいデータセットに追加するには、ある種のループが必要ですか?

+1

オブジェクトが注文を持っていません。配列内のオブジェクトの*キー*をソートすることができます。配列を使用するか、オブジェクトではなく配列にデータを格納できます。 –

+0

@MikeCこれは配列でのみ可能ですか?配列の順序はどのようになっていますか? – user1486133

+1

配列内に配列がある場合は、['sort'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)関数を使用できます。独自のソート関数を渡して、 'spec.bedroom_number'値を比較してください。私が投稿したリンクは、あなた自身のソート機能を書く方法の例を示しています。 –

答えて

2

あなたはArray.prototype.sort()を使用してspecs.bedroom_numberによってソートその後、あなたの変数property_listのうち、オブジェクトの新しい配列を作成し、することができます

var property_list = {1: {description: '...',specs: {bedroom_number: 7}},2: {description: '...',specs: {bedroom_number: 3}},3: {description: '...',specs: {bedroom_number: 5}}}, 
 
    arr = Object 
 
     .keys(property_list) 
 
     .map(function (key) { 
 
      return property_list[key]; 
 
     }) 
 
     .sort(function (a, b) { 
 
      return b.specs.bedroom_number - a.specs.bedroom_number; 
 
     }); 
 

 
console.log(arr);

+0

ありがとう!これは動作します:) – user1486133

+0

喜んで助けて –

関連する問題