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 动态修改样式和层叠样式表代码
Apr 27 Javascript
JavaScript Date对象 日期获取函数
Dec 19 Javascript
深入理解ECMAScript的几个关键语句
Jun 01 Javascript
AngularJS基础 ng-model-options 指令简单示例
Aug 02 Javascript
Jquery调用iframe父页面中的元素及方法
Aug 23 Javascript
Windows系统下安装Node.js的步骤图文详解
Nov 15 Javascript
JSON键值对序列化和反序列化解析
Jan 24 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
Nov 30 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
Apr 01 Javascript
vue实现简单的日历效果
Sep 24 Javascript
vue中axios的二次封装实例讲解
Oct 14 Javascript
javascript实现简单留言板案例
Feb 09 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数据入库前清理 注意php intval与mysql的int取值范围不同
2010/12/12 PHP
PHP循环结构实例讲解
2014/02/10 PHP
PHP+javascript制作带提示的验证码源码分享
2014/05/28 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
日期 时间js控件
2009/05/07 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
2017/04/11 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
python实现从web抓取文档的方法
2014/09/26 Python
python中使用序列的方法
2015/08/03 Python
Django之路由层的实现
2019/09/09 Python
Python求解正态分布置信区间教程
2019/11/20 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
浅谈html5 video 移动端填坑记
2018/01/15 HTML / CSS
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
Java的for语句中break, continue和return的区别
2013/12/19 面试题
公司前台辞职报告
2014/01/19 职场文书
产品开发计划书
2014/04/27 职场文书
会计系毕业生求职信
2014/05/28 职场文书
企业员工集体活动方案
2014/08/17 职场文书
四年级学生期末评语
2014/12/26 职场文书
2016高考冲刺决心书
2015/09/23 职场文书
工作自我评价范文
2019/03/21 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL
详解Python内置模块Collections
2022/03/22 Python