2016-04-02 10 views
2

アソシエイティブ配列をvaluesプロパティでどのようにソートしますか?値自体は複数のプロパティを持つオブジェクトで、オブジェクトのプロパティの1つは文字列です。文字列で配列をアルファベット順に並べ替えることができるようにしたい。それは可能ですか?アソシエート配列を値のプロパティでソートする方法

私はここに含めたいくつかの場所で回答を探してみました

How to sort an array of associative arrays by value of a given key in PHP?

How to sort an associative array by its values in Javascript?

How to sort an (associative) array by value?

私はそれらは私の質問に答えはないと思う...ではない、少なくともない方法で、私はわかる。どんな助けもありがとう。 例:私が望む

Object = { 
    1: obj.prop = "C", 
    5: obj.prop = "A, 
    3: obj.prop = "B 
} 

:JavaScriptで

Object = { 
    5: obj.prop = "A", 
    3: obj.prop = "B", 
    1: obj.prop = "C" 
} 
+2

(1)JavaScriptオブジェクトは「連想配列」とは多少異なりますが、実際には全く同じではありません。(2)オブジェクトのプロパティには特定の順序はありません。 「並べ替え」は意味をなさない。 – Pointy

+1

'Object.keys()'を使ってプロパティ名の*配列*を抽出し、好きなようにソートしてから、それを繰り返して、その順番でオブジェクトプロパティにアクセスすることができます。 – Pointy

+0

2番目のリンクは完全に動作します – juvian

答えて

0

、連想配列(オブジェクト)の順序を持​​っていません。

これは、結果をオブジェクトに格納することは不可能であることを意味します。代わりに、{key、value}オブジェクトの配列に格納することができます。

var obj = { 
    "1":{prop:"C"}, 
    "5":{prop:"A"}, 
    "3":{prop:"B"}, 
} 

var res = []; 
for(var i in obj){ 
    res.push({ 
     key:i, 
     value:obj[i] 
    }); 
} 

res.sort(function(a,b){ 
    return a.value.prop > b.value.prop ? -1 : 1; 
}); 

/*res == [ 
    {key:5,value:{prop:"A"}}, 
    {key:3,value:{prop:"B"}}, 
    {key:1,value:{prop:"C"}}, 
]*/ 
+0

私は並べ替えでは、三項演算子はa.value.prop> b.value.propであるべきだと思いますか? 1:-1;代わりに、私はそれを理解するために必要なものを私にくれました。どうもありがとうございます! – ProgrammingGodJK

関連する問題