我想要基于唯一 Device_MAC
键的结果数组。
let Devices = [
{
Device_MAC: '44:6F:28:C1:2E:C0',
Device_Model: 'Model 1',
Date: '2021-4-27',
Total: 66
},
{
Device_MAC: '44:6F:28:C1:2E:C1',
Device_Model: 'Model 1',
Date: '2021-4-27',
Total: 2
}
]
let CompletedArray = [
{ Completed: 58, Device_MAC: '44:6F:28:C1:2E:C0' },
{ Completed: 2, Device_MAC: '44:6F:28:C1:2E:C1' }
]
let IncompletedArray = [{ Incompleted: 8, Device_MAC: '44:6F:28:C1:2E:C0' } ]
let Result = [
{
Device_MAC: "44:6F:28:C1:2E:C0",
Device_Model: "K Lite",
Date: "2021-4-27",
Total: 66,
Complete: 58,
Incomplete: 8,
},
{
Device_MAC: "44:6F:28:C1:2E:C1",
Device_Model: "K Lite",
Date: "2021-4-27",
Total: 2,
Complete: 2,
Incomplete: 0,
},
];
答案 0 :(得分:1)
const merge = (...arrays) => {
const merged = {};
arrays.forEach(a => a.forEach(item =>
merged[item.Device_MAC] = Object.assign({Incompleted: 0, Completed: 0}, merged[item.Device_MAC], item)));
return Object.values(merged);
};
// -----------
// Test
let Devices = [
{
Device_MAC: '44:6F:28:C1:2E:C0',
Device_Model: 'Model 1',
Date: '2021-4-27',
Total: 66
},
{
Device_MAC: '44:6F:28:C1:2E:C1',
Device_Model: 'Model 1',
Date: '2021-4-27',
Total: 2
}
]
let CompletedArray = [
{ Completed: 58, Device_MAC: '44:6F:28:C1:2E:C0' },
{ Completed: 2, Device_MAC: '44:6F:28:C1:2E:C1' }
]
let IncompletedArray = [{ Incompleted: 8, Device_MAC: '44:6F:28:C1:2E:C0' } ]
console.log(merge(Devices, CompletedArray, IncompletedArray));
答案 1 :(得分:0)
let cStatus = null,IncStatus = null;
if (Devices.length) {
Devices.forEach((device) => {
cStatus = CompletedArray.length
? CompletedArray.find((obj) => {
return obj.Device_MAC === device.Device_MAC ? obj.Completed : 0;
})
: 0;
IncStatus = IncompletedArray.length
? IncompletedArray.find((obj) => {
return obj.Device_MAC === device.Device_MAC ? obj.Incompleted : 0;
})
: 0;
device.Completed = cStatus ? cStatus.Completed : 0;
device.Incompleted = IncStatus ? IncStatus.Incompleted : 0;
});
}