2016-12-09 14 views
-1
- const Employers=[ 
      {employerName:"A1",employees:[{employeeName:"EA1"},{employeeName:"EA2"}]}, 
      {employerName:"B1",employees:[{employeeName:"EB1"},{employeeName:"EB2"}]} 
      ] 

私の質問どのように私は雇用者をemployeeNameでソートしますか?Lodashを使用して子配列の属性でソートするにはどうすればいいですか

+0

@MarioSantiniは受け入れ答えは '' @MarioSantiniの提案でlodash * – zhon

+0

*から除去された_.pluck''を使用して、あなたはさらに取得し、これより良い質問をすることができるはずです。 – zhon

+0

その重複した質問ではない、言及されたリンクは完全に異なっています – Kamaraju

答えて

0

ソート最初でソートされた従業員から

_.sortBy(Employers, function(emp) { 
    return _.chain(emp) 
     .get('employees') 
     .sortBy('employeeName') 
     .map('employeeName') 
     .first() 
     .value(); 
}); 
+0

これは働きません.. – Kamaraju

+0

@Kamaraju check fiddle https://jsfiddle.net/stasovlas/wLoo1rbb/ – stasovlas

+0

私はあなたがビットを修正したようだと思うのですが、 – Kamaraju

0

あなたはデータ構造を変更することができる場合、私はこれで行くのをお勧めします:

const EmployersSortable = [ 
    { employerName: 'A1', employeeName: 'EA1' }, 
    { employerName: 'B1', employeeName: 'EB2' }, 
    { employerName: 'A1', employeeName: 'EA2' }, 
    { employerName: 'B1', employeeName: 'EB1' } 
] 

次に、あなただけの行うことができます。EmployersSortable = _.sortBy(EmployersSortable, 'employeeName');

を使用すると、データ構造を変更することができない場合は、あなたは、元の1を反復処理し、これを行うことにより、上記1に変換する必要があります:

var EmployersSortable = []; 

Employers.forEach(function(employerObj) { 
    employerObj.employees.forEach(function(employeeObj) { 
    EmployersSortable.push({ 
     employerName: employerObj.employerName, 
     employeeName: employeeObj.employeeName 
    }); 
    }) 
}); 
+0

私はその構造を分解し、再びソートの構造を再構築する良いオプションを考えていません – Kamaraju

関連する問題