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 相关文章推荐
firefox事件处理之自动查找event的函数(用于onclick=foo())
Aug 05 Javascript
jQuery的12招常用技巧分享
Aug 08 Javascript
javascript错误的认识不用关心内存管理
Dec 15 Javascript
js去除重复字符串两种实现方法
Jan 09 Javascript
javascript实现回车键提交表单方法总结
Jan 10 Javascript
详解AngularJS中的表格使用
Jun 16 Javascript
javascript原型继承工作原理和实例详解
Apr 07 Javascript
Sequelize中用group by进行分组聚合查询
Dec 12 Javascript
小程序实现短信登录倒计时
Jul 12 Javascript
Webpack设置环境变量的一些误区详解
Dec 19 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
Jan 20 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
Nov 26 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
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
codeigniter自带数据库类使用方法说明
2014/03/25 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
js 分栏效果实现代码
2009/08/29 Javascript
jquery animate 动画效果使用说明
2009/11/04 Javascript
jquery获取input的value问题说明
2010/08/19 Javascript
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
javascript设计模式--策略模式之输入验证
2015/11/27 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
python pytest进阶之xunit fixture详解
2019/06/27 Python
python tornado修改log输出方式
2019/11/18 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
英国团购网站:Groupon英国
2017/11/28 全球购物
毕业生的求职信范文分享
2013/12/04 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
会计求职自荐信
2014/06/20 职场文书
经典毕业生求职信
2014/07/12 职场文书
话题作文之成长
2019/12/09 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang
教你使用Jenkins集成Harbor自动发布镜像
2022/04/03 Servers