簡體   English   中英

Node.js javascript:通過多個鍵值減少對象數組

[英]Node.js javascript: Reduce Array of Object by Multiple Key Value

我在 Node.js 腳本中有以下對象數組:

[ 
{ 
    start: '10-05-2018',    
    assigned_agent: '1257434'
     },
  { 
    start: '10-05-2018',
    assigned_agent: '1257434'
    },
  { 
    start: '10-05-2018',
    assigned_agent: '1257434'
   },
  { 
    start: '10-06-2018',    
    assigned_agent: '1257434'
    },
  { 
    start: '10-05-2018',   
    assigned_agent: '1277852'
     },
  { 
    start: '10-05-2018',
    assigned_agent: '1277852'
  }
 ]

我需要的是按 start 和assigned_agent 鍵對其進行分組。 我嘗試過filter函數示例,但沒有運氣。 不是,數組中還有其他鍵/值對,但為了清楚起見省略了它們。 此外,雖然這是一個 Node.js 腳本,但如果有幫助,我確實可以使用 Lodash。

謝謝你。

如果您可以使用 lodash,請嘗試groupBy

 const data = [ { start: "10-05-2018", assigned_agent: "1257434" }, { start: "10-05-2018", assigned_agent: "1257434" }, { start: "10-05-2018", assigned_agent: "1257434" }, { start: "10-06-2018", assigned_agent: "1257434" }, { start: "10-05-2018", assigned_agent: "1277852" }, { start: "10-05-2018", assigned_agent: "1277852" }, ] const group_by_both = _.chain(data) .groupBy((el) => `${el.start} ${el.assigned_agent}`) .values() .value() console.log(group_by_both)
 .as-console-wrapper { max-height: 100% !important; }
 <script src="https://cdn.jsdelivr.net/npm/lodash@4.17.20/lodash.min.js"></script>

 var data = [{ start: '10-05-2018', assigned_agent: '1257434' }, { start: '10-05-2018', assigned_agent: '1257434' }, { start: '10-05-2018', assigned_agent: '1257434' }, { start: '10-06-2018', assigned_agent: '1257434' }, { start: '10-05-2018', assigned_agent: '1277852' }, { start: '10-05-2018', assigned_agent: '1277852' } ]; var grouped = data.reduce((accumulator, element) => { // group by start and agent, so combine values for unique key var key = element.start + element.assigned_agent; // if there is not already a grouping, make an empty array accumulator[key] = accumulator[key] || []; // add the element to the desired group accumulator[key].push(element); // return the accumulator for the next iteration return accumulator; }, {}); console.log(grouped);

暫無
暫無

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

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