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 相关文章推荐
JQuery 小练习(实例代码)
Aug 07 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
Mar 16 Javascript
jQuery鼠标事件汇总
Aug 30 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
Jun 09 Javascript
BootStrap网页中代码显示用法详解
Oct 21 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
Apr 27 Javascript
详解Vue-Router源码分析路由实现原理
May 15 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
Feb 19 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
May 12 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
Jul 17 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
Oct 31 Javascript
VUE解决跨域问题Access to XMLHttpRequest at
May 06 Vue.js
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中通过curl smtp发送邮件
2012/06/05 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
php验证码实现代码(3种)
2015/09/07 PHP
CI(Codeigniter)的Setting增强配置类实例
2016/01/06 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
JQuery Dialog的内存泄露问题解决方法
2010/06/18 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
超级简单实现JavaScript MVC 样式框架
2015/03/24 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
关于网页中的无缝滚动的js代码
2016/06/09 Javascript
ES6新增的math,Number方法
2017/08/06 Javascript
bootstrap table服务端实现分页效果
2017/08/10 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
Python实例分享:快速查找出被挂马的文件
2014/06/08 Python
Python中字符串的处理技巧分享
2016/09/17 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
2019/08/09 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
悦木之源美国官网:Origins美国
2016/08/01 全球购物
AE美国鹰日本官方网站: American Eagle Outfitters
2016/12/10 全球购物
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
精彩自我鉴定
2014/01/16 职场文书
活动总结书
2014/05/08 职场文书
给校长的建议书100字
2014/05/16 职场文书
运动会宣传口号
2014/06/09 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
成绩单评语
2015/01/04 职场文书
公司放假通知范文
2015/04/14 职场文书
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python