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 笔记二 Array和Date对象方法
May 22 Javascript
jquery里的each使用方法详解
Dec 22 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
Mar 07 Javascript
JS基于构造函数实现的菜单滑动显隐效果【测试可用】
Jun 21 Javascript
easyUI combobox实现联动效果
Jan 17 Javascript
基于Vue单文件组件详解
Sep 15 Javascript
解决axios发送post请求返回400状态码的问题
Aug 11 Javascript
利用Webpack实现小程序多项目管理的方法
Feb 25 Javascript
js实现指定时间倒计时效果
Aug 26 Javascript
基于vue和websocket的多人在线聊天室
Feb 01 Javascript
sharp.js安装过程中遇到的问题总结
Apr 02 Javascript
关于React Native 无法链接模拟器的问题
Jun 21 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
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
PHP设置进度条的方法
2015/07/08 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
浅谈Javascript嵌套函数及闭包
2010/11/09 Javascript
5秒后跳转到另一个页面的js代码
2013/10/12 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
javascript常用的方法整理
2015/08/20 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
angularjs实现首页轮播图效果
2017/04/14 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
JavaScript中关于class的调用方法
2017/11/28 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
python编程开发之类型转换convert实例分析
2015/11/13 Python
Python自定义主从分布式架构实例分析
2016/09/19 Python
python实现稀疏矩阵示例代码
2017/06/09 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
python pandas时序处理相关功能详解
2019/07/03 Python
使用Python实现分别输出每个数组
2019/12/06 Python
Python实现使用dir获取类的方法列表
2019/12/24 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
小学岗位竞聘方案
2014/01/22 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
个人总结与自我评价
2014/09/18 职场文书
2014年数学教师工作总结
2014/12/03 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
python单向链表实例详解
2022/05/25 Python
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript
Python可视化神器pyecharts绘制地理图表
2022/07/07 Python