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 iframe编程相关代码
Dec 28 Javascript
在javaScript中关于submit和button的区别介绍
Oct 20 Javascript
jquery删除指定的html标签并保留标签内文本内容的方法
Apr 02 Javascript
Angular.js 实现数字转换汉字实例代码
Jul 14 Javascript
AngularJS基础 ng-keydown 指令简单示例
Aug 02 Javascript
关于js函数解释(包括内嵌,对象等)
Nov 20 Javascript
jQuery实现拖动剪裁图片作为头像
Dec 28 Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
Jan 11 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
Jul 19 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
May 18 Javascript
基于vue-upload-component封装一个图片上传组件的示例
Oct 16 Javascript
Vue父组件向子组件传值以及data和props的区别详解
Mar 02 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危险函数(disable_functions)
2012/02/23 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
js实现的标题栏新消息闪烁提示效果
2014/06/06 Javascript
js控制文本框只输入数字和小数点的方法
2015/03/10 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
jquery横向纵向鼠标滚轮全屏切换
2017/02/27 Javascript
vue.js删除动态绑定的radio的指定项
2017/06/02 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
jquery+css实现下拉列表功能
2017/09/03 jQuery
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
ios设备中angularjs无法改变页面title的解决方法
2018/09/13 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
vuex + keep-alive实现tab标签页面缓存功能
2019/10/17 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
JavaScript 实现继承的几种方式
2021/02/19 Javascript
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python文件操作之批量修改文件后缀名的方法
2018/08/10 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
Python在OpenCV里实现极坐标变换功能
2019/09/02 Python
python3实现微型的web服务器
2019/09/03 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
python线程优先级队列知识点总结
2021/02/28 Python
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
美国电子产品购物网站:BuyDig.com
2020/06/17 全球购物
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
工程部主管岗位职责
2013/11/17 职场文书
护理专科自荐书范文
2014/02/18 职场文书
2014年预备党员学习两会心得体会
2014/03/17 职场文书
网络管理员岗位职责
2014/03/17 职场文书
老公保证书范文
2014/04/29 职场文书
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
民警个人对照检查剖析材料
2014/09/17 职场文书