2016-04-15 12 views
1

Lodashを使用してオブジェクトのオブジェクトをascとdescにソートする方法は?Lodash - オブジェクト内のオブジェクトをソートする(descとasc)

たとえば、「r」または「d」でソートするとします。

これは以下のように私のオブジェクトがどのように見えるかです:純粋なJSも非常に簡単で、あなたはこのような何かを行うことが

enter image description here

+0

ソートされた順序で異なるキーにオブジェクトを配置することを意味しますか?もしそうなら純粋なJSだけでこれを行うことができます。 1つの方法は、それらを配列に移動してそこでソートし、次にソートされた順序でobjにコピーすることです。あるいは、オブジェクト要素の総数の値で長さプロパティをマスターオブジェクトに追加してからArrayを実行します。 prototype.sort.call(obj、callback) – Redu

+1

JavaScript仕様では、オブジェクトのプロパティには順序がありません。 「最初の」または「最後の」プロパティはありません。ソートすることはできません。割り当てた順序(またはコンソールに表示される順序)にかかわらず、列挙するときに特定の順序で戻すことは保証されません。順序付けられたデータ構造が必要な場合は、配列を使用します。 –

答えて

1

置きアレイと使用機能で内部オブジェクトsortBy()

var users = [ 
{ 'user': 'fred', 'age': 48 }, 
{ 'user': 'barney', 'age': 36 }, 
{ 'user': 'fred', 'age': 40 }, 
{ 'user': 'barney', 'age': 34 } 
]; 

_.sortBy(users, function(o) { return o.user; }); 
// → objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] 
console.log(users.reverse()); // desc order 
+0

私はこれを好きでした。私は '_.sortBy(sortArray、function(o){return o.d;});を実行しました。それは動作しません。オブジェクトは開始時と同じようにソートされます。 – snuuve

+0

@snuuveコードを表示してください。 – sphinks

0

;

var obj = {a:16, b:2, c:8, d:4, e:1}, 
 
    okeys = Object.keys(obj), 
 
    sorted = {}; 
 
okeys.sort((p,c) => obj[p] <= obj[c]).forEach((p,i) => sorted[okeys[i]] = obj[p]); 
 
document.write('<pre> ' + JSON.stringify(sorted, 0, 2) + '</pre>');

私は彼らの数値に応じて、オブジェクトのプロパティを並べ替えています。それらの値はオブジェクトであり、これらのオブジェクトのプロパティ値に従ってソートすることもできます。しかし、私はこれを行うことの背後にある賢明な理由が何であるかについてはコメントできません。

関連する問題