JavaScript如何将二维对象数组按id归类汇总count值为数组
原有代码问题说明
- reduce初始值用了空数组,没有用哈希对象做中间映射归集同id的count,无法快速匹配重复id
- 遍历子数组元素时直接赋值新数组
[value.xxx],会覆盖之前已存入的count值,没有做追加操作 - 你代码里用的
recommendationItemIdExternal、recommendationItemRating字段和示例数据的id、count不匹配,实际使用时对应替换即可
正确实现代码
// 第一步:遍历二维数组,用哈希对象归集同id的所有count const tempMap = data.reduce((result, subArray) => { subArray.forEach(item => { // 首次遇到该id时初始化空数组 if (!result[item.id]) { result[item.id] = [] } // 追加当前count到对应数组 result[item.id].push(item.count) }) return result }, {}) // 第二步:将哈希对象转换为目标数组结构 const newData = Object.keys(tempMap).map(id => { return { id: id, count: tempMap[id] } })
如果你的业务字段确实是recommendationItemIdExternal和recommendationItemRating,把上面代码里的item.id替换为item.recommendationItemIdExternal、item.count替换为item.recommendationItemRating即可。
内容的提问来源于stack exchange,提问作者Michael Lee
相关产品推荐
相关产品推荐

