2016-07-14 1 views
0

さまざまなフィールドタイプ(文字列と数字)のオブジェクトに対してorderByを使用する方法を教えてください。私は種類が混在する列の並び

[{"a":2},{"a":3},{"a":"a"},{"a":1},{"a":"b"},{"a":"c"}] 

を持っているが、どのように私は

[{"a":1},{"a":2},{"a":3},{"a":"a"},{"a":"b"},{"a":"c"}] 
+0

あなたはitem.a typeof演算>> '_.sortBy(ARR、[ "A"]、機能(アイテム){リターンこのように' _.sortBy'メソッドを使用することができます! == '数字'}) '。あなたのコレクションはどこですか? –

+0

@TheReason ty for direction。私はleftPad(https://www.npmjs.com/package/left-pad)を使ってすべての項目を文字列に変換し、 '_.orderBy([{a: '958'}、{a:7} {a: 'a'}、{a: '66'}、{a: 'c'}、{a: 'b'}、[(item)=> leftPad(item.a、10、0)] 、['asc']) '(より複雑な並べ替えのために_.orderByのみを使用しなければなりません) – carcinogen75

答えて

0

のようなものを得ることができます例

_.orderBy([{a: 3}, {a: 2}, {a: 'a'}, {a: 1}, {a: 'c'}, {a: 'b'}], ['a'], ['asc']) 

については は、値の_.toString結果を比較してください。

あなたは、最初に入力し、その後ソート_.groupByとを用途に応じてパーティションを作成する場合は

var input = [{a: 3}, {a: 2}, {a: 'a'}, {a: 1}, {a: 'c'}, {a: 'b'}], 
 
    output = _.sortBy(input, o => _.toString(o['a'])); 
 

 
console.log(output);
<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>

var input = [{a: 3}, {a: 2}, {a: 'a'}, {a: 1}, {a: 'c'}, {a: 'b'}]; 
 
    
 
var output = _(input) 
 
    .groupBy(o => typeof o['a']) 
 
    .map(a => _.sortBy(a, 'a')) 
 
    .flatten() 
 
    .value(); 
 

 
console.log(output);
<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>

関連する問題