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

Redux中如何正确更新嵌套对象内部数组的单个元素

问题分析
  • 错误1:误用Array.filter()方法
    filter的作用是筛选数组元素,回调函数需要返回布尔值来决定当前元素是否保留。你在回调中返回的是字符串/元素值,所有非空字符串都会被判定为true,因此filter执行完会返回原完整数组。
  • 错误2:额外嵌套了一层数组
    你把filter返回的整个数组又套在了一对[]里,最终得到的cities会是嵌套结构[原cities数组],完全不符合预期。
  • 错误3:方法选择错误
    你要做的是按索引替换数组元素,应该用Array.map()而不是filter,map会遍历每一个元素,返回替换后的新值,正好匹配你的需求。
修正后的代码
case "SET_IN_CITIES_ARRAY":
  return {
    ...state,
    currentFilters: {
      ...state.currentFilters,
      cities: state.currentFilters.cities.map((c, i) =>
        i === action.payload.index ? action.payload.id : c
      ),
    },
  };

执行后当action.payload.id = "Warsaw"、action.payload.index = 1时,得到的cities就是你预期的["Berlin", "Warsaw", "Madrid"]。

内容的提问来源于stack exchange,提问作者some nooby questions

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:09:01