如何将一个对象的值合并到对象数组中的元素?



我有两个数组——一个字符串数组和一个对象数组。我在第一个数组中找到重复项,并得到一个计数。我想使用Product2Id作为键,将我在counts对象中找到的整数值添加到数据库中。老实说,我还没弄清楚,几个小时的谷歌搜索没有任何结果。

但是count中的id值的数量将始终等于phbentry中的product2Id的数量。

期望结果:

[{"Id":"01u8D00000105oqQAA","Product2Id":"01t8D000001fDfjQAE","Count":"3"},
{"Id":"01u8D00000105oxQAA","Product2Id":"01t8D000001fDfqQAE","Count":"1"},
{"Id":"01u8D00000105p2QAA","Product2Id":"01t8D000001fDfvQAE","Count":"1"},
{"Id":"01u8D000003WBH5QAO","Product2Id":"01t1O000004XyR0QAK","Count":"2"},
{"Id":"01u8D000003WBH0QAO","Product2Id":"01t8D000001hKF1QAM","Count":"1"}....];

let counts = {}; 
let array = ["01t8D0000014jiuQAA", "01t5Y000006VydJQAS", "01t8D000001fDfjQAE", "01t8D000001fDfjQAE", "01t8D000001hKF1QAM", "01t1O000004XyR0QAK", "01t14000006956yAAA", "01t1O000004XyR0QAK", "01t8D000001fDfqQAE", "01t8D000001f1yeQAA", "01t8D000001fDfvQAE", "01t8D000001fDfjQAE"];
let pbentry = [{"Id":"01u8D000003WBHAQA4","Product2Id":"01t14000006956yAAA"},{"Id":"01u8D000003WBH5QAO","Product2Id":"01t1O000004XyR0QAK"}, {"Id":"01u8D000000zEfiQAE","Product2Id":"01t5Y000006VydJQAS"},{"Id":"01u8D000003WBGqQAO","Product2Id":"01t8D0000014jiuQAA"},
{"Id":"01u8D000003WBHyQAO","Product2Id":"01t8D000001f1yeQAA"},{"Id":"01u8D00000105oqQAA","Product2Id":"01t8D000001fDfjQAE"}, {"Id":"01u8D00000105oxQAA","Product2Id":"01t8D000001fDfqQAE"},{"Id":"01u8D00000105p2QAA","Product2Id":"01t8D000001fDfvQAE"}, {"Id":"01u8D000003WBH0QAO","Product2Id":"01t8D000001hKF1QAM"}];
array.forEach(function (x) { counts[x] = (counts[x] || 0) + 1; }); 
console.log(pbentry)

这行应该可以做到,它只是获得你已经计算出的计数并将其附加到pbentry数组:

pbentry = pbentry.map(pb => ({...pb, Count: counts[pb.Product2Id] || 0}))

算完数再加:

let counts = {}; 
let array = ["01t8D0000014jiuQAA", "01t5Y000006VydJQAS", "01t8D000001fDfjQAE", "01t8D000001fDfjQAE", "01t8D000001hKF1QAM", "01t1O000004XyR0QAK", "01t14000006956yAAA", "01t1O000004XyR0QAK", "01t8D000001fDfqQAE", "01t8D000001f1yeQAA", "01t8D000001fDfvQAE", "01t8D000001fDfjQAE"];
let pbentry = [{"Id":"01u8D000003WBHAQA4","Product2Id":"01t14000006956yAAA"},{"Id":"01u8D000003WBH5QAO","Product2Id":"01t1O000004XyR0QAK"}, {"Id":"01u8D000000zEfiQAE","Product2Id":"01t5Y000006VydJQAS"},{"Id":"01u8D000003WBGqQAO","Product2Id":"01t8D0000014jiuQAA"},
{"Id":"01u8D000003WBHyQAO","Product2Id":"01t8D000001f1yeQAA"},{"Id":"01u8D00000105oqQAA","Product2Id":"01t8D000001fDfjQAE"}, {"Id":"01u8D00000105oxQAA","Product2Id":"01t8D000001fDfqQAE"},{"Id":"01u8D00000105p2QAA","Product2Id":"01t8D000001fDfvQAE"}, {"Id":"01u8D000003WBH0QAO","Product2Id":"01t8D000001hKF1QAM"}];
array.forEach(function (x) { counts[x] = (counts[x] || 0) + 1; }); 
pbentry = pbentry.map(pb => ({...pb, Count: counts[pb.Product2Id] || 0}))
console.log(pbentry)

下面是实现预期目标的一种可能方法。

<<p>

代码片段/strong>

const myTransform = (countArr, infoArr) => (
// iterate over the infoArr
infoArr?.map(({Product2Id, ...rest}) => ({
// populate Product2Id & other fields as-is
...rest, Product2Id,
// set-up "Count" using "countArr" (by filtering for particular Product2Id
// and getting the length of the filtered array)
Count: countArr?.filter(x => x === Product2Id)?.length,
}))
);
let counts = {};
let myArray = ["01t8D0000014jiuQAA", "01t5Y000006VydJQAS", "01t8D000001fDfjQAE", "01t8D000001fDfjQAE", "01t8D000001hKF1QAM",
"01t1O000004XyR0QAK", "01t14000006956yAAA", "01t1O000004XyR0QAK", "01t8D000001fDfqQAE", "01t8D000001f1yeQAA",
"01t8D000001fDfvQAE", "01t8D000001fDfjQAE"
];

let pbentry = [{
"Id": "01u8D000003WBHAQA4",
"Product2Id": "01t14000006956yAAA"
}, {
"Id": "01u8D000003WBH5QAO",
"Product2Id": "01t1O000004XyR0QAK"
},
{
"Id": "01u8D000000zEfiQAE",
"Product2Id": "01t5Y000006VydJQAS"
}, {
"Id": "01u8D000003WBGqQAO",
"Product2Id": "01t8D0000014jiuQAA"
},
{
"Id": "01u8D000003WBHyQAO",
"Product2Id": "01t8D000001f1yeQAA"
}, {
"Id": "01u8D00000105oqQAA",
"Product2Id": "01t8D000001fDfjQAE"
},
{
"Id": "01u8D00000105oxQAA",
"Product2Id": "01t8D000001fDfqQAE"
}, {
"Id": "01u8D00000105p2QAA",
"Product2Id": "01t8D000001fDfvQAE"
},
{
"Id": "01u8D000003WBH0QAO",
"Product2Id": "01t8D000001hKF1QAM"
}
];
console.log(
'counting unique ids:n',
myTransform(myArray, pbentry)
);
.as-console-wrapper {
max-height: 100% !important;
top: 0
}

在上面的代码片段中添加内联注释。

最新更新