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

如何用Filter与扩展运算符替换对象数组并赋值回原配置对象

解决方案

情况1:直接修改原对象(允许变更原数据)

如果不需要保留原remainingConfig的副本,可以直接逐层赋值替换:

// 先确认目标层级存在,避免报错
if (remainingConfig[sdb.menu]?.params) {
  remainingConfig[sdb.menu].params.menu = filteredMenu;
}
// 如果params可能不存在,需要先创建params对象
else if (remainingConfig[sdb.menu]) {
  remainingConfig[sdb.menu].params = { menu: filteredMenu };
}

情况2:创建新对象(保持原数据不变,immutable方式)

如果要避免修改原对象,需要用扩展运算符逐层解构并替换目标数组,确保完整保留原有结构:

const updatedRemainingConfig = {
  // 拷贝外层所有属性
  ...remainingConfig,
  // 针对目标menu键对应的对象,拷贝原有属性
  [sdb.menu]: {
    ...(remainingConfig[sdb.menu] || {}),
    // 处理params层级,拷贝原有params属性,替换menu数组
    params: {
      ...(remainingConfig[sdb.menu]?.params || {}),
      menu: filteredMenu
    }
  }
};

为什么之前的扩展运算符没生效?

你之前的问题大概率是只浅拷贝了外层对象,没有深入到params.menu这一层级进行替换。必须逐层解构到目标数组所在的嵌套层级,才能在保留原有结构的同时完成替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 15:57:20