0

ページにリストボックスを設定するリストボックスがあります。それを設定する JavaScript ハッシュは、次のようになります。

wiget_cont = ({"39":{"name":"astronaut","id":"39","weight":"189"},
               "37":{"name":"corgi","id":"37","weight":"10"},
               "49":{"name":"zoologist","id":"49","weight":"313"}});

ie と Firefox では、名前キーの値のアルファベット順に基づいてリストボックスにデータが入力されます。もちろん、chrome は数値キーをソートするので、私のリストボックスにはすべてお尻が後ろに入力されます。

ハッシュの 2 番目の部分を取り出そうとしました (「name」で始まるすべてのオブジェクトと同様)。id は明らかにキーとハッシュの両方で使用されます。私の考えでは、オブジェクト配列にすべての値オブジェクトを入力してから、名前を並べ替えるというものでした。次に、そのオブジェクト配列の id をキーとして、その配列を値として使用して、新しいハッシュを作成します (うまくいけば、これは何らかの意味を持ちます)。これはこれを行うための最良の方法ですか?フレームワークと既存のコードのため、この構造を内外で使用する必要があります。

4

1 に答える 1

1

を使用Object.keysして配列を取得し、名前で並べ替えてから反復処理することができます

var wiget_cont = ({"39":{"name":"astronaut","id":"39","weight":"189"},
               "37":{"name":"corgi","id":"37","weight":"10"},
               "49":{"name":"zoologist","id":"49","weight":"313"}});

var keys = Object.keys(wiget_cont).sort(function (a, b) {return wiget_cont[a].name>wiget_cont[b].name;}),
    i = 0;

for (;i<keys.length;++i) { /* wiget_cont[keys[i]] ... */ }

>文字列比較に使用したくない場合は、 をご覧ください.localeCompare

于 2013-01-10T01:54:37.470 に答える