You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将计数对象的值按Product2Id合并到对象数组元素中?

问题描述

我拥有两个数组:一个字符串数组,一个对象数组。已统计出字符串数组中重复项的数量,得到counts对象。现需以Product2Id为匹配键,将counts对象中的整数值添加到pbentry数组的对应对象中。尝试多时且查阅资料仍未解决该问题,另外counts中的ID数量与pbentry中的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数组,给每个对象添加Count属性,值直接从counts对象中通过Product2Id匹配获取即可。

修改后的完整代码:

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; }); 

// 为每个对象添加Count属性
pbentry.forEach(item => {
  item.Count = counts[item.Product2Id].toString();
});

console.log(pbentry);

说明

  • 遍历pbentry时,用每个对象的Product2Id作为键,从counts中取出对应数值,转成字符串后赋值给item.Count,和期望结果的格式一致。
  • 如果不需要字符串类型的Count值,直接去掉.toString()即可。

内容的提问来源于stack exchange,提问作者joebob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:20:27