[英]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.