我一直在試圖永遠實作這一點。你認為你能幫我根據鍵合并兩個陣列物件PartitionKey,如果PartitionKey不匹配,仍然將它添加到陣列中嗎?
let arr1 =[
{ PartitionKey: '047', AttributionCount: 61 },
{ PartitionKey: '043', AttributionCount: 136 },
{ PartitionKey: '053', AttributionCount: 36 }
];
let arr2 = [
{ PartitionKey: '043', ReportCount: 5 },
{ PartitionKey: '047', ReportCount: 2 },
{ PartitionKey: '045', ReportCount: 2 },
{ PartitionKey: '041', ReportCount: 3 }
]
let arr3 = arr1.map((item, i) => Object.assign({}, item, arr2[i]));
console.log(arr3);
我想回傳結果
[
{ PartitionKey: '047', ReportCount: 2, AttributionCount: 61 },
{ PartitionKey: '043', ReportCount: 5, AttributionCount: 136 },
{ PartitionKey: '053', ReportCount: 0, AttributionCount: 36 },
{ PartitionKey: '045', ReportCount: 2, AttributionCount: 0},
{ PartitionKey: '041', ReportCount: 3, AttributionCount: 0}
]
uj5u.com熱心網友回復:
我的方式...
let arr1 =
[ { PartitionKey: '047', AttributionCount: 61 }
, { PartitionKey: '043', AttributionCount: 136 }
, { PartitionKey: '053', AttributionCount: 36 }
]
let arr2 =
[ { PartitionKey: '043', ReportCount: 5 }
, { PartitionKey: '047', ReportCount: 2 }
, { PartitionKey: '045', ReportCount: 2 }
, { PartitionKey: '041', ReportCount: 3 }
]
const result =
Object.entries(
arr1
.concat(arr2)
.reduce((res,{PartitionKey,...info}) =>
{
if (!res[PartitionKey]) res[PartitionKey] = info
else Object.assign(res[PartitionKey], info )
return res
}
,{})
).map( ([k,v]) =>
({PartitionKey:k, AttributionCount:0, ReportCount:0, ...v}))
console.log( result )
.as-console-wrapper {max-height: 100%!important;top:0 }
uj5u.com熱心網友回復:
你可以這樣做:
let arr1 =[
{ PartitionKey: '047', AttributionCount: 61 },
{ PartitionKey: '043', AttributionCount: 136 },
{ PartitionKey: '053', AttributionCount: 36 }
];
let arr2 = [
{ PartitionKey: '043', ReportCount: 5 },
{ PartitionKey: '047', ReportCount: 2 },
{ PartitionKey: '045', ReportCount: 2 },
{ PartitionKey: '041', ReportCount: 3 }
]
let arr3 = arr2.map((item, i) => {
const itemArray1 = arr1.find(x => x.PartitionKey == item.PartitionKey) || {AttributionCount: 0}
return {...item, ...itemArray1}
});
console.log('arr3', arr3);
uj5u.com熱心網友回復:
嘗試使用object.assign()方法解決此問題。
例如: const returnedTarget = Object.assign(target, source);
參考:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
uj5u.com熱心網友回復:
試試這個,基準是好的。
let arr1 = [
{ PartitionKey: '047', AttributionCount: 61 },
{ PartitionKey: '043', AttributionCount: 136 },
{ PartitionKey: '053', AttributionCount: 36 },
];
let arr2 = [
{ PartitionKey: '043', ReportCount: 5 },
{ PartitionKey: '047', ReportCount: 2 },
{ PartitionKey: '045', ReportCount: 2 },
{ PartitionKey: '041', ReportCount: 3 },
];
let map = new Map();
[...arr1, ...arr2].forEach((item) => {
let itemPk = item.PartitionKey;
map.set(itemPk, { PartitionKey: 0, ReportCount: 0, AttributionCount: 0, ...map.get(itemPk), ...item });
});
let result = Array.from(map.values());
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/384859.html
標籤:javascript 数组
下一篇:從陣列串列中洗掉重復項
