gpt4 book ai didi

javascript - 合并具有不同长度、键和值的两个对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:30:34 26 4
gpt4 key购买 nike

我有两个不等长的对象,我想根据“mac_id”合并。我正在使用 lodash _.merge(),但它与可变对象长度不兼容。

obj4=[ 
{ mac_id: '00-17-0d-00-00-30-47-fa',
sent_mail_time: '2017-09-28 11:07:0' },
{ mac_id: '00-17-0d-00-00-30-48-18',
sent_mail_time: '2017-09-28 11:07' }
];

obj3=[
{ mac_id: '00-17-0d-00-00-30-4d-94',
notif_time: '2017-09-28 10:16:28' },
{ mac_id: '00-17-0d-00-00-30-47-fa',
notif_time: '2017-09-28 10:14:28' },
{ mac_id: '00-17-0d-00-00-30-49-58',
notif_time: '2017-09-28 10:26:28' } ]

使用 _.groupBy('mac_id') 我得到了想要的数据,但不是以结构化的方式。

我需要遵循什么方法才能得到这样的最终结果?

[ 
{ mac_id: '00-17-0d-00-00-30-4d-94',
notif_time: '2017-09-28 10:16:28' },
{ mac_id: '00-17-0d-00-00-30-47-fa',
sent_mail_time: '2017-09-28 11:07:0',
notif_time: '2017-09-28 10:14:28' },
{ mac_id: '00-17-0d-00-00-30-49-58',
notif_time: '2017-09-28 10:26:28' },
{ mac_id: '00-17-0d-00-00-30-48-18',
sent_mail_time: '2017-09-28 11:07' } ]

最佳答案

你可以使用 Object.assign():

var _ = require('lodash');

let obj4=[
{ mac_id: '00-17-0d-00-00-30-47-fa',
sent_mail_time: '2017-09-28 11:07:0' },
{ mac_id: '00-17-0d-00-00-30-48-18',
sent_mail_time: '2017-09-28 11:07' }
];

let obj3=[
{ mac_id: '00-17-0d-00-00-30-4d-94',
notif_time: '2017-09-28 10:16:28' },
{ mac_id: '00-17-0d-00-00-30-47-fa',
notif_time: '2017-09-28 10:14:28' },
{ mac_id: '00-17-0d-00-00-30-49-58',
notif_time: '2017-09-28 10:26:28' } ];


obj3.forEach(obj3Child => {
let objtToMerge;
if (!(objtToMerge = _.find(obj4,function (obj4Child) { return obj4Child.mac_id === obj3Child.mac_id; }))) {
obj4.push(obj3Child);
} else {
Object.assign(objtToMerge, obj3Child);
}
});

console.log(obj4);

关于javascript - 合并具有不同长度、键和值的两个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46470191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com