在javascript对象中对重复键执行操作

在javascript对象中对重复键执行操作,javascript,json,node.js,object,Javascript,Json,Node.js,Object,我有一个非常混乱的js对象,我正试图清理它。 我是否需要创建一个新对象,在该对象中,我将在每个重复的键出现时添加一个新元素 基本上,我正试图转变: [ { device: 4323, action: 'CASH IN' }, { device: 4325, action: 'ALTER DB' }, { device: 4323, action: 'Order Pizza' } ] 进入: [ { device: 4323, action: 'CASH IN, Order Pizza'

我有一个非常混乱的js对象,我正试图清理它。 我是否需要创建一个新对象,在该对象中,我将在每个重复的键出现时添加一个新元素

基本上,我正试图转变:

[ { device: 4323, action: 'CASH IN' },
  { device: 4325, action: 'ALTER DB' },
  { device: 4323, action: 'Order Pizza' } ]
进入:

[ { device: 4323, action: 'CASH IN, Order Pizza' },
  { device: 4325, action: 'ALTER DB' } ]
使用array.reduce:

var items=[{device:4323,action:'CASH IN'},
{设备:4325,操作:'alterdb'},
{设备:4323,操作:'订购比萨饼'}];
var res=项目。减少((m,o)=>{
var found=m.find(e=>e.device==o.device);
found?found.action+=`,${o.action}`:m.push(o);
返回m;
}, []);
控制台日志(res)使用array.reduce:

var items=[{device:4323,action:'CASH IN'},
{设备:4325,操作:'alterdb'},
{设备:4323,操作:'订购比萨饼'}];
var res=项目。减少((m,o)=>{
var found=m.find(e=>e.device==o.device);
found?found.action+=`,${o.action}`:m.push(o);
返回m;
}, []);
控制台日志(res)尝试以下操作

var arr=[{device:4323,action:'CASH IN'},
{设备:4325,操作:'alterdb'},
{设备:4323,操作:'订购比萨饼'}];
变量映射={};//映射将键存储为设备,将值存储为数组的索引
变量计数器=1;//计数器来管理索引
变量结果=[];//结果数组
arr.forEach(函数(项){//在数组上迭代
if(map[item.device]){//检查map中是否存在设备
//如果存在,则仅在数组中更新其操作
结果[map[item.device]-1]。操作=结果[map[item.device]-1]。操作+“,”+item.action;
}否则{//如果不存在,则在映射中设置设备并在结果数组中推送对象
map[item.device]=计数器++;
结果:推送(项目);
}
});
控制台日志(结果)尝试以下操作

var arr=[{device:4323,action:'CASH IN'},
{设备:4325,操作:'alterdb'},
{设备:4323,操作:'订购比萨饼'}];
变量映射={};//映射将键存储为设备,将值存储为数组的索引
变量计数器=1;//计数器来管理索引
变量结果=[];//结果数组
arr.forEach(函数(项){//在数组上迭代
if(map[item.device]){//检查map中是否存在设备
//如果存在,则仅在数组中更新其操作
结果[map[item.device]-1]。操作=结果[map[item.device]-1]。操作+“,”+item.action;
}否则{//如果不存在,则在映射中设置设备并在结果数组中推送对象
map[item.device]=计数器++;
结果:推送(项目);
}
});
控制台日志(结果)