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

JavaScript如何修改嵌套对象数组中指定元素的count属性值

问题分析与解决方法

现有代码的问题

你的代码核心问题是完全破坏了原数组的外层结构:

  • 你对外层分组数组执行map操作时,直接将原分组对象(包含category、id、data三个属性)替换为了element.data.map(...)的返回值,最终得到的结果是一个仅包含商品数据的二维数组,丢失了原有的分组信息,和预期结构完全不符。
  • 另外如果你需要修改原dup数组,需要将函数返回的新数组重新赋值给dup变量,否则原数组不会发生变更。

正确实现

实现逻辑是:遍历外层分组时保留所有分组属性,仅修改分组下的data字段;再遍历data中的商品,匹配到对应id时更新count即可:

function getNewCartItems() {
  return dup.map(category => {
    // 保留当前分组的全部原有属性,仅更新data字段
    return {
      ...category,
      data: category.data.map(item => {
        return item.id === action.item.id ? {...item, count: item.count + 1} : item
      })
    }
  })
}

// 如果需要修改原dup数组,调用时执行赋值即可
// dup = getNewCartItems()

如果存在不同分类下商品id重复的情况,可以额外加上分组id的匹配逻辑,避免误改其他分类下的同名id商品。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:45:04