2017-01-13 10 views
0

私はこの配列を持っています。私はcountで降順に配列を並べ替える方法を知りませんし、この配列をループします。これはjavascriptにあります。Javascript sort descending and loop

users[23423423] = { count: 5, name: "Bla Bla" } 
    users[32432234] = { count: 15, name: "Etc Etc" } 
    users[87686786] = { count: 30, name: "Jason" } 
    users[54633683] = { count: 1, name: "Party" } 
    users[68345521] = { count: 23, name: "Another name" } 

users[key] - キーはFacebookのIDです。

ユーザー配列を数えてソートするにはどうすればよいですか? PHPでforeachのようにjavascriptでこの配列をループする方法はありますか?ありがとうございました。

+1

アレイは、典型的には、任意のキーと値のペアの関連付けを持っていません。配列キーは通常、連続した数値であると考えられます。それは(典型的な)配列ではありません。 – deceze

+0

私はこれを試しました: users.sort(function(a、b){ return parseFloat(a.count) - parseFloat(b.count); }); –

+0

いいえ、配列を作成すると、例:このfacebook idは2倍のユーザーになります。[68345521] –

答えて

2

Objectプロパティには順序がありません。代わりに、ソートされた配列の順序でプロパティ名arrayとfetch要素を並べ替えます。ここでは、Array#sortメソッドを使用してプロパティ名配列をソートすることができます。

var users = {}; 
 

 
users[23423423] = { 
 
    count: 5, 
 
    name: "Bla Bla" 
 
} 
 
users[32432234] = { 
 
    count: 15, 
 
    name: "Etc Etc" 
 
} 
 
users[87686786] = { 
 
    count: 30, 
 
    name: "Jason" 
 
} 
 
users[54633683] = { 
 
    count: 1, 
 
    name: "Party" 
 
} 
 
users[68345521] = { 
 
    count: 23, 
 
    name: "Another name" 
 
} 
 

 
var keys = Object.keys(users).sort(function(j, k) { 
 
    return users[j].count - users[k].count; 
 
}) 
 

 
console.log(keys); 
 

 
console.log(keys.map(function(v) { 
 
    return users[v]; 
 
}));

+0

私の配列はオブジェクトとして表示されます。どうしてか分かりません –