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 表单验证扩展(三)
Oct 20 Javascript
你需要知道的10个最佳javascript开发实践小结
Apr 15 Javascript
回车直接实现点击某按钮的效果即触发单击事件
Feb 27 Javascript
javascript十六进制及二进制转化的方法
May 06 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
Jan 19 Javascript
vue实现提示保存后退出的方法
Mar 15 Javascript
jQuery length 和 size()区别总结
Apr 26 jQuery
使用vue打包时vendor文件过大或者是app.js文件很大的问题
Jun 29 Javascript
基于vue的验证码组件的示例代码
Jan 22 Javascript
微信小程序的mpvue框架快速上手指南
May 15 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
Sep 25 Javascript
利用JS判断元素是否为数组的方法示例
Jan 08 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 socke 向指定页面提交数据
2008/07/23 PHP
PHP+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
PHP 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
php中数据库连接方式pdo和mysqli对比分析
2015/02/25 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
2015/05/13 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
javascript 类型判断代码分析
2010/03/28 Javascript
js+css使DIV始终居于屏幕中间 左下 左上 右上 右下的代码集合
2011/03/10 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
Node.js中使用jQuery的做法
2016/08/17 Javascript
js控住DOM实现发布微博效果
2016/08/30 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
JS使用tofixed与round处理数据四舍五入的区别
2017/10/25 Javascript
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
vue加载自定义的js文件方法
2018/03/13 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
使用PYTHON接收多播数据的代码
2012/03/01 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
python实现图片彩色转化为素描
2019/01/15 Python
python装饰器代替set get方法实例
2019/12/19 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
python os.listdir()乱码解决方案
2021/01/31 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
Shopty西班牙:缝纫机在线销售
2018/01/26 全球购物
应届生会计求职信
2013/11/11 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
先进教师个人事迹材料
2014/12/15 职场文书
在校学生证明格式
2015/06/24 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书