簡體   English   中英

如何對數組中的不同對象數組進行排序

[英]How to sort different arrays of objects inside an array

如何在一個數組中分別對2個對象數組進行排序? 需要Lodash的解決方案。 謝謝。

按年份排序的數組示例:

var objects = [[{
      year: 2010,
      name: "john",
      value: 30
    },
    {
      year: 2009,
      name: "john",
      value: 40
    }
  ],
  [{
      year: 2018,
      name: "bob",
      value: 40
    },
    {
      year: 2015,
      name: "bob",
      value: 30
    }]]

按年份排序后的所需輸出:

[[{
      year: 2009,
      name: "john",
      value: 40
    },
    {
      year: 2010,
      name: "john",
      value: 30
    }
  ],
  [{
      year: 2015,
      name: "bob",
      value: 30
    },
    {
      year: 2018,
      name: "bob",
      value: 40
    }]]

每個子集合的orderBy應該足夠

 var objects = [ [{ year: 2010, name: "john", value: 30 }, { year: 2009, name: "john", value: 40 }], [{ year: 2018, name: "bob", value: 40 }, { year: 2015, name: "bob", value: 30 }] ] console.log(objects.map(subObject => _.orderBy(subObject, "year"))); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script> 

您可以在數組數組上使用map()並在map函數中返回排序后的數組。

 var arr = [[{year:2010,name:"john",value:30},{year:2009,name:"john",value:40}],[{year:2018,name:"bob",value:40},{year:2015,name:"bob",value:30}]]; const res = arr.map(x => x.slice().sort((a,b) => a.year - b.year)); console.log(res) 

您需要映射數組並對其進行排序:

 const objects = [ [{ year: 2010, name: "john", value: 30 }, { year: 2009, name: "john", value: 40 }], [{ year: 2018, name: "bob", value: 40 }, { year: 2015, name: "bob", value: 30 }] ] const sorted = objects.map(r=>r.sort((a,b)=>a.year - b.year)); console.log(sorted) 

您可以使用_.partialRight()_.map()_.sortBy()子數組來生成函數:

 const { partialRight: pr, map, sortBy } = _; const sortSubArrays = pr(map, arr => sortBy(arr, 'year')); const objects = [[{year:2010,name:"john",value:30},{year:2009,name:"john",value:40}],[{year:2018,name:"bob",value:40},{year:2015,name:"bob",value:30}]]; const output = sortSubArrays(objects); console.log(output); 
 .as-console-wrapper { max-height: 100% !important; top: auto; } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script> 

或者使用lodash / fp並刪除partialRight:

 const { map, sortBy } = _; const sortSubArrays = map(sortBy('year')); const objects = [[{year:2010,name:"john",value:30},{year:2009,name:"john",value:40}],[{year:2018,name:"bob",value:40},{year:2015,name:"bob",value:30}]]; const output = sortSubArrays(objects); console.log(output); 
 .as-console-wrapper { max-height: 100% !important; top: auto; } 
 <script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)'></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM