JavaScript中Object值合并方法详解


Posted in Javascript onDecember 22, 2017

前言:在日常开发工作中我们可能会遇到js中对象中所有值的复制工作,也有可能是通过electron开发客户端,改版时候面临到的设置合并问题。那么本文将对此做一个简要解决方案的叙述。

介绍:比如有obj1, obj2,我们需要将obj1中的所有与obj2中相同字段相同深度的值copy给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]
          }
        })
      }

    },

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript来定义类的规范小结
Nov 19 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
Dec 30 Javascript
判断访客终端类型集锦
Jun 05 Javascript
JavaScript中eval函数的问题
Jan 31 Javascript
深入理解jQuery layui分页控件的使用
Aug 17 Javascript
javascript创建对象的3种方法
Nov 02 Javascript
JS实现的五级联动菜单效果完整实例
Feb 23 Javascript
discuz表情的JS提取方法分析
Mar 22 Javascript
微信小程序自定义导航隐藏和显示功能
Jun 13 Javascript
vue mounted组件的使用
Jun 18 Javascript
JavaScript防止全局变量污染的方法总结
Aug 02 Javascript
js实现中文实时时钟
Jan 15 Javascript
Angular简单验证功能示例
Dec 22 #Javascript
Angular实现的table表格排序功能完整示例
Dec 22 #Javascript
详解Vue中localstorage和sessionstorage的使用
Dec 22 #Javascript
vue + element-ui实现简洁的导入导出功能
Dec 22 #Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
Dec 22 #Javascript
js读取本地文件的实例
Dec 22 #Javascript
javascript将json格式数组下载为excel表格的方法
Dec 22 #Javascript
You might like
PHP中SESSION的注销与清除
2015/04/16 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
jquery 插件开发 extjs中的extend用法小结
2013/01/04 Javascript
javascript中常用编程知识
2013/04/08 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
js调出上下文菜单的实例
2015/12/17 Javascript
js实现的下拉框二级联动效果
2016/04/30 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
webpack3之loader全解析
2017/10/26 Javascript
在Vue项目中引入JQuery-ui插件的讲解
2019/01/27 jQuery
详解使用React制作一个模态框
2019/03/14 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
2019/09/06 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
Python的Tornado框架实现异步非阻塞访问数据库的示例
2016/06/30 Python
python基础教程项目五之虚拟茶话会
2018/04/02 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
Python pyinotify模块实现对文档的实时监控功能方法
2018/10/13 Python
Python创建一个元素都为0的列表实例
2019/11/28 Python
pytorch之Resize()函数具体使用详解
2020/02/27 Python
PyQt5实现登录页面
2020/05/30 Python
全球虚拟主机商:HostGator
2017/02/06 全球购物
电子商务应届生求职信
2013/11/16 职场文书
房地产开发计划书
2014/01/10 职场文书
奉献家乡演讲稿
2014/09/16 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技