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 快捷键设置实现代码
Mar 13 Javascript
FireFox JavaScript全局Event对象
Jun 14 Javascript
用jQuery技术实现Tab页界面之二
Sep 21 Javascript
JavaScript实现的一个计算数字步数的算法分享
Dec 06 Javascript
jQuery简单设置文本框回车事件的方法
Aug 01 Javascript
点击页面任何位置隐藏div的实现方法
Sep 05 Javascript
如何使用headjs来管理和异步加载js
Nov 29 Javascript
javascript 中事件冒泡和事件捕获机制的详解
Sep 01 Javascript
JS模拟浏览器实现全局搜索功能
Sep 11 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
Jun 19 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
Feb 08 Javascript
ajax请求前端跨域问题原因及解决方案
Oct 16 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
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
js同比例缩放图片的小例子
2013/10/30 Javascript
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
jQuery 导航自动跟随滚动的实现代码
2018/05/30 jQuery
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
JavaScript中的全局属性与方法深入解析
2020/06/14 Javascript
Vue性能优化的方法
2020/07/30 Javascript
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
python和shell变量互相传递的几种方法
2013/11/20 Python
python实现的文件夹清理程序分享
2014/11/22 Python
深入解析Python中的lambda表达式的用法
2015/08/28 Python
让python在hadoop上跑起来
2016/01/27 Python
遗传算法之Python实现代码
2017/10/10 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
2020/05/18 Python
Python实现一个优先级队列的方法
2020/07/31 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
建筑经济管理专业求职信分享
2014/01/06 职场文书
勤俭节约倡议书
2014/04/14 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
工作求职自荐信
2014/06/13 职场文书
个人借款协议书范本
2014/11/17 职场文书
2014年英语工作总结
2014/12/20 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
大国崛起日本观后感
2015/06/02 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL