JavaScript对象值合并:保留目标结构并复制源数据

作者:拾光时间:2026-10-23 02:23:49浏览:468

本文介绍一种在JavaScript中合并对象值的方法,旨在将源对象中与目标对象相同字段且深度一致的值复制到目标对象中,同时严格保持目标对象的字段结构不变。该方法采用ES6语法实现,通过遍历目标对象键名并校验类型一致性来完成赋值,适用于日常开发及Electron客户端设置合并等场景。

对象值合并场景与需求

引言:在常规开发场景下,常需执行JavaScript对象值的复制操作;若基于Electron构建客户端应用,在版本迭代时亦会遭遇配置合并的挑战。本文旨在阐述一种简明的解决路径。

概述:假设存在对象obj1与obj2,目标是将obj1中与obj2同字段且同深度的值复制至obj2,同时维持obj2原有的字段结构。通过调用下述方法即可实现(此处采用ES6语法规范)。

代码示例:

保留目标结构的合并实现


/**
     * 将src中的数据copy到dist中,并保留dist的结构
     * @param src
     * @param dist
     */
    copyValue(src, dist) {
      if (!src || typeof(src) !== 'object' || typeof(dist) !== 'object'){
        return ;
      }

      let keys = Object.keys(dist)
      if (keys && keys.length > 0 && isNaN(keys[0])){
        keys.forEach(key => {
          let value = dist[key]
          let srcVal = src[key]

          // 判断是不是对象,如果是则继续遍历,不是则开始赋值或忽略
          if (value !== undefined && typeof(value) === 'object' && srcVal && typeof(srcVal) === 'object' && srcVal[0] === undefined){
            copyValue(srcVal, value)
          } else if (value !== undefined && srcVal && typeof(value) == typeof (srcVal)){
            // 如果源数据存在,并且类型一致,则开始赋值
            dist[key] = src[key]
          }
        })
      }

    },

至此,本文内容已全部呈现,期望能为读者的学习提供助力,同时也恳请读者持续支持本平台。

作者最新文章