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 EasyUI 中文API Button使用实例
Apr 14 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
Dec 30 Javascript
jquery live()调用不存在的解决方法
Feb 26 Javascript
通过Javascript读取本地Excel文件内容的代码示例
Apr 08 Javascript
QQ空间顶部折页撕开效果示例代码
Jun 15 Javascript
java和javascript获取word文档的书签位置对比
Jun 19 Javascript
jquery的总体架构分析及实现示例详解
Nov 08 Javascript
js实现select下拉框菜单
Dec 08 Javascript
vue2组件之select2调用的示例代码
Oct 12 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
Mar 15 Javascript
webpack安装配置与常见使用过程详解(结合vue)
Jun 01 Javascript
Vue实现下拉加载更多
May 09 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
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
php中上传文件的的解决方案
2018/09/25 PHP
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
简略的前端架构心得&&基于editor为例子的编码小技巧
2010/11/25 Javascript
一些javascript一些题目的解析
2010/12/25 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
AngularJS ng-bind 指令简单实现
2016/07/30 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
Angular2实现自定义双向绑定属性
2017/03/22 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
2018/09/19 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
[01:17:55]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
Python迭代器和生成器介绍
2015/03/06 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
Django数据库操作之save与update的使用
2020/04/01 Python
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
日本即尚网:JSHOPPERS.com(支持中文)
2019/12/03 全球购物
一份Java笔试题
2012/02/21 面试题
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
硅酸盐工业控制专业应届生求职信
2013/11/02 职场文书
中英文自我评价常用句型
2013/12/19 职场文书
大四优秀党员个人民主评议
2014/09/19 职场文书
公司市场部岗位职责
2015/04/15 职场文书
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript