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
相关产品推荐
相关产品推荐

