如何基于javascript中数组中的匹配键值创建新的json数组 var billList=[ { 供应商:2665, 类型:自动售货机, 电话号码:60583, 文件编号:, 日期:2021/06/06, 截止日期:2021/06/06, 折扣:0, 税额:.00, 雷蒙特:151.52, 可提供的磁盘:, Disctake:, 付款:151.52, billcom:SGMI-11, 波努姆:, 货币:新加坡元, 地址:250, 银行账户:1 }, { 供应商:2665, 类型:自动售货机, 电话号码:60584, 文件编号:, 日期:2021/06/06, 截止日期:2021/06/06, 折扣:0, 税额:.00, 雷马蒙特:53.79, 可提供的磁盘:, Disctake:, 付款:53.79, billcom:SGMI-12, 波努姆:, 货币:新加坡元, 地址:250, 银行账户:1 }, { 供应商:2664, 类型:自动售货机, 电话号码:60585, 文件编号:, 日期:2021/06/06, 截止日期:2021/06/06, 折扣:0, 税额:.00, 雷马蒙特:153.79, 可提供的磁盘:, Disctake:, 付款:53.79, billcom:SGMI-12, 波努姆:, 货币:新加坡元, 地址:250, 银行账户:1 }];

如何基于javascript中数组中的匹配键值创建新的json数组 var billList=[ { 供应商:2665, 类型:自动售货机, 电话号码:60583, 文件编号:, 日期:2021/06/06, 截止日期:2021/06/06, 折扣:0, 税额:.00, 雷蒙特:151.52, 可提供的磁盘:, Disctake:, 付款:151.52, billcom:SGMI-11, 波努姆:, 货币:新加坡元, 地址:250, 银行账户:1 }, { 供应商:2665, 类型:自动售货机, 电话号码:60584, 文件编号:, 日期:2021/06/06, 截止日期:2021/06/06, 折扣:0, 税额:.00, 雷马蒙特:53.79, 可提供的磁盘:, Disctake:, 付款:53.79, billcom:SGMI-12, 波努姆:, 货币:新加坡元, 地址:250, 银行账户:1 }, { 供应商:2664, 类型:自动售货机, 电话号码:60585, 文件编号:, 日期:2021/06/06, 截止日期:2021/06/06, 折扣:0, 税额:.00, 雷马蒙特:153.79, 可提供的磁盘:, Disctake:, 付款:53.79, billcom:SGMI-12, 波努姆:, 货币:新加坡元, 地址:250, 银行账户:1 }];,javascript,json,Javascript,Json,我想要一个这样的新json数组,即基于供应商、duedate、货币合并json obj [ { 供应商:2665, 账单详情:[ { 电话号码:60583, 付款:151.52 }, { 电话号码:60584, 付款:53.79 } ], 截止日期:2021/06/06, 货币:新加坡元 }, { 供应商:2664, 账单详情:[ { 电话号码:60585, 付款:151.52 } ], 截止日期:2021/06/06, 货币:新加坡元 } ] 使用Array.reduce并基于供应商属性进行组

我想要一个这样的新json数组,即基于供应商、duedate、货币合并json obj

[ { 供应商:2665, 账单详情:[ { 电话号码:60583, 付款:151.52 }, { 电话号码:60584, 付款:53.79 } ], 截止日期:2021/06/06, 货币:新加坡元 }, { 供应商:2664, 账单详情:[ { 电话号码:60585, 付款:151.52 } ], 截止日期:2021/06/06, 货币:新加坡元 } ] 使用Array.reduce并基于供应商属性进行组合:

const billList=[{供应商:2665,类型:VendBill,billid:60583,文件号:,日期:2021/06/06,到期日期:2021/06/06,折扣:0,税额:00,剩余金额:151.52,discavailable:,DiscTake:,付款:151.52,billcom:SGMI-11,ponum:,货币:新加坡元,账户:250,银行账户:1},{供应商:2665,类型:VendBill,billid:60584,文件号:,日期:2021/06/06,到期日期:2021/06/06,折扣:0,税额:00,剩余金额:53.79,discavailable:,DiscTake:,付款:53.79,billcom:SGMI-12,ponum:,货币:新加坡元,账户:250,银行账户:1},{供应商:2664,类型:VendBill,billid:60585,文件号:,日期:2021/06/06,付款日期:2021/06/06,折扣:0,税额:00,剩余金额:153.79,discavailable:,DiscTake:,付款:53.79,billcom:SGMI-12,ponum:,货币:新加坡元,账户:250,银行账户:1}]; const out=billList.reducearr,obj=>{//将原始列表缩减为新列表 const{vendor,billid,payment,duedate,currency}=obj;//分解每个对象的属性 const transaction=arr.findt=>t.vendor===vendor;//检查是否存在具有相同vendor的事务 如果事务 transaction.billDetails.push{billid:billid,payment:payment};//如果存在事务,请添加此条目 其他的 arr.push{vendor,billDetails:[{billid,payment}],duedate,currency};//否则,创建一个新的事务条目 返回arr; }, []; 控制台。注销; var billList=[ { 供应商:2665, 类型:自动售货机, 电话号码:60583, 文件编号:, 日期:2021/06/06, 截止日期:2021/06/06, 折扣:0, 税额:.00, 雷蒙特:151.52, 可提供的磁盘:, Disctake:, 付款:151.52, billcom:SGMI-11, 波努姆:, 货币:新加坡元, 地址:250, 银行账户:1 }, { 供应商:2665, 类型:自动售货机, 电话号码:60584, 文件编号:, 日期:2021/06/06, 截止日期:2021/06/06, 折扣:0, 税额:.00, 雷马蒙特:53.79, 可提供的磁盘:, Disctake:, 付款:53.79, billcom:SGMI-12, 波努姆:, 货币:新加坡元, 地址:250, 银行账户:1 }, { 供应商:2664, 类型:自动售货机, 电话号码:60585, 文件编号:, 日期:2021/06/06, 截止日期:2021/06/06, 折扣:0, 税额:.00, 雷马蒙特:153.79, 可提供的磁盘:, Disctake:, 付款:53.79, billcom:SGMI-12, 波努姆:, 货币:新加坡元, 地址:250, 银行账户:1 }]; const temp=billList.ReduceAc,{供应商、billid、到期日、货币、付款}=> acc[供应商]??={货币,到期日,账单明细:[]}.billDetails.push{billid,payment},acc , {} const result=Object.entriestemp.map[vendor,data]=>{vendor,…data}
控制台.logresult;欢迎使用堆栈溢出。请参阅和。