具有相同id的jquery/javascript合并数组

具有相同id的jquery/javascript合并数组,javascript,jquery,Javascript,Jquery,我有以下数组结果: [ {"timeNameID":"2","alarmID":"1"}, {"timeNameID":"3","alarmID":"2"}, {"timeNameID":"4","alarmID":"3"}, {"timeNameI

我有以下数组结果:

[
{"timeNameID":"2","alarmID":"1"},
{"timeNameID":"3","alarmID":"2"},
{"timeNameID":"4","alarmID":"3"},
{"timeNameID":"5","alarmID":"1"},
{"timeNameID":"6","alarmID":"2"},
{"timeNameID":"7","alarmID":"2"},

{"timeNameID":"2","alarmID":"2"},
{"timeNameID":"4","alarmID":"1"},
{"timeNameID":"5","alarmID":"1"},
{"timeNameID":"6","alarmID":"2"},
{"timeNameID":"7","alarmID":"4"}
]
从这个JS脚本:

var post_str = []
$('.alarm1, .alarm2').each(function ()
{
    var timeNameID = $(this).attr('id'),
        alarmID = $(this).find(':selected').val()
                    
        post_str.push({
            'timeNameID': timeNameID,
            'alarmID': alarmID
        });
});
                
alert(JSON.stringify(post_str));
现在我需要将该数组与相同的
timeNameID
合并,如下所示:

[
{"timeNameID":"2","alarmID":"1","alarmID2":"2"},
{"timeNameID":"3","alarmID":"2","alarmID2":""}, //null/empty
{"timeNameID":"4","alarmID":"3","alarmID2":"1"},
{"timeNameID":"5","alarmID":"1","alarmID2":"1"},
{"timeNameID":"6","alarmID":"2","alarmID2":"2"},
{"timeNameID":"7","alarmID":"2","alarmID2":"4"}
]
是否可以按照我的预期进行数组合并?

let数据=[
{“timeNameID”:“2”,“alarmID”:“1”},
{“timeNameID”:“3”,“alarmID”:“2”},
{“timeNameID”:“4”,“alarmID”:“3”},
{“timeNameID”:“5”,“alarmID”:“1”},
{“timeNameID”:“6”,“alarmID”:“2”},
{“timeNameID”:“7”,“alarmID”:“2”},
{“timeNameID”:“2”,“alarmID”:“2”},
{“timeNameID”:“4”,“alarmID”:“1”},
{“timeNameID”:“5”,“alarmID”:“1”},
{“timeNameID”:“6”,“alarmID”:“2”},
{“timeNameID”:“7”,“alarmID”:“4”}
]
设hash={};
让结果=[];
data.forEach(项=>{
if(散列[item.timeNameID]){
哈希[item.timeNameID].push(item.alarmID)
}否则{
哈希[item.timeNameID]=[item.alarmID]
}
})
Object.entries(hash.forEach)(entry=>{
常量[键,值]=输入;
结果.推送({“timeNameID”:键,“alarmID”:val[0]?val[0]:'',“alarmID2”:val[1]?val[1]:''})
});
console.log(结果)
Tada

const obj1={
id:1,
姓名:“比尔”
};
常数obj2={
id:1,
姓名:“乔”
};
常数数据=[
{“timeNameID”:“2”,“alarmID”:“1”},
{“timeNameID”:“3”,“alarmID”:“2”},
{“timeNameID”:“4”,“alarmID”:“3”},
{“timeNameID”:“5”,“alarmID”:“1”},
{“timeNameID”:“6”,“alarmID”:“2”},
{“timeNameID”:“7”,“alarmID”:“2”},
{“timeNameID”:“2”,“alarmID”:“2”},
{“timeNameID”:“4”,“alarmID”:“1”},
{“timeNameID”:“5”,“alarmID”:“1”},
{“timeNameID”:“6”,“alarmID”:“2”},
{“timeNameID”:“7”,“alarmID”:“4”}
];
函数合并(obj1、obj2){
常量键=对象键(obj1);
for(对象的常量键。键(obj2)){
如果(!key.包括(key))键,则按(key);
}
const result={};
for(键的常数键){
结果[键]=obj1[键]==obj2[键]?obj1[键]:[obj1[键]、obj2[键];
}
返回结果;
}
功能合并双(数据1,键){
常量存储={};
for(对象条目的常量[ia,ea](数据1)){
store[ea[key]]=store[ea[key]]==未定义?ea:merge(store[ea[key]],ea);
}
常量数据=[];
for(Object.entries(store))的常量[id,元素]{
数据推送(元素);
}
返回数据;
}
日志(mergeTwin(数据,“timeNameID”)