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插件封装
Nov 24 Javascript
javascript实现图片自动和可控的轮播切换特效
Apr 13 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
May 28 Javascript
学习JavaScript设计模式(封装)
Nov 26 Javascript
轻松掌握JavaScript享元模式
Aug 27 Javascript
微信小程序加载更多 点击查看更多
Nov 29 Javascript
js is_valid_filename验证文件名的函数
Jul 19 Javascript
Vue学习笔记之表单输入控件绑定
Sep 05 Javascript
Element UI框架中巧用树选择器的实现
Dec 12 Javascript
eslint 的三大通用规则详解
May 16 Javascript
解决layui轮播图有数据不显示的情况
Sep 16 Javascript
js动态添加带圆圈序号列表的实例代码
Feb 18 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+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
php设置编码格式的方法
2013/03/05 PHP
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
jquery对table中各数据的增加、保存、删除操作示例
2014/05/14 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
jquery操作 iframe的方法
2014/12/03 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
微信小程序文章详情页跳转案例详解
2019/07/09 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
vue vant中picker组件的使用
2020/11/03 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
在漏洞利用Python代码真的很爽
2007/08/26 Python
Python协程的用法和例子详解
2017/09/09 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
Python切片工具pillow用法示例
2018/03/30 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
Python 中的Selenium异常处理实例代码
2018/05/03 Python
python中的二维列表实例详解
2018/06/19 Python
Django 反向生成url实例详解
2019/07/30 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
python求解汉诺塔游戏
2020/07/09 Python
Python实现粒子群算法的示例
2021/02/14 Python
Mybag美国/加拿大:英国奢华包包和名牌手袋网站
2020/02/16 全球购物
房地产推广策划方案
2014/05/19 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
中秋节慰问信
2015/02/15 职场文书
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python