2016-04-07 10 views
0

連想配列を値で並べ替える必要があります(下の「位置」の値を使用)。私は配列に変換しようとしました。それは正常に動作しています。しかし、私は知りたがっていました。他のやり方はありますか?Javascript:Sortオブジェクトの配列に変換せずにvalueプロパティを使用する連想配列

{ 
    "CAB":{ 
      name:CBSSP, 
      position:2 
     }, 
    "NSG":{ 
      name:NNSSP, 
      position:3 
     }, 
    "EQU":{ 
      name:SSP, 
      position:1 
     } 
} 

答えて

0

JavaScriptで何の連想配列、何を持っていることは性質CABNSGEQUで、オブジェクトではありません。

オブジェクトプロパティはセットオーダーを保証することはできません。そのため、配列は実際には配列を保証するので、解決策はオブジェクトの配列を使用することです。

+0

を "オブジェクトのプロパティは、設定された順序を保証することはできません" - ではないJavaScriptで。 – georg

0

オブジェクトへの順序付けられた参照に順序配列を使用できます。配列はゼロに基づいているため、位置の修正が必要です。

var object = { "CAB": { name: 'CBSSP', position: 2 }, "NSG": { name: 'NNSSP', position: 3 }, "EQU": { name: 'SSP', position: 1 } }, 
 
    order = []; 
 

 
Object.keys(object).forEach(function (k) { 
 
    return order[object[k].position - 1] = k; 
 
}); 
 

 
document.write('<pre>' + JSON.stringify(order, 0, 4) + '</pre>');

1

また、試みることができる:

Object.keys(o).map(function(key){return o[key];}) 
       .sort(function(p, c){return p.position - c.position}) 
関連する問題