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

JavaScript 如何根据父级属性更新嵌套对象数组的配置?

问题原因

原代码存在三个问题:

  • 没有传递父级配置参数,无法处理配置缺失时的继承逻辑
  • 未对arr2.find()返回空的场景做兼容,会触发解构报错
  • 每次遍历查找配置性能较低,嵌套层级深时问题更明显

实现代码

// 提前将arr2转为映射表,提升查找性能
const configMap = new Map(arr2.map(item => [
  item.name,
  { val1: item.val1, val2: item.val2, applyToChildren: item.applyToChildren }
]))
// 定义默认配置常量
const DEFAULT_CONFIG = { val1: false, val2: false, applyToChildren: false }

// 递归函数新增入参接收父级配置
const addConfig = (items, parentConfig = DEFAULT_CONFIG) =>
  items.map(item => {
    // 优先取匹配到的配置
    const matchedConfig = configMap.get(item.name)
    // 无匹配时按规则选配置
    const currentConfig = matchedConfig ?? (parentConfig.applyToChildren ? parentConfig : DEFAULT_CONFIG)
    
    return {
      ...item,
      config: currentConfig,
      // 子项递归时传入当前配置作为父级配置
      children: addConfig(item.children, currentConfig)
    }
  })

const result = addConfig(arr1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:36:03