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 last-child 列表最后一项的样式
Jan 22 Javascript
收集的一些Array及String原型对象的扩展实现代码
Dec 05 Javascript
jQuery实现切换页面布局使用介绍
Oct 09 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
Mar 18 Javascript
js无刷新操作table的行和列
Mar 27 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
Mar 02 Javascript
jquery实现全屏滚动
Dec 28 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
May 31 Javascript
老生常谈JQuery data方法的使用
Sep 09 Javascript
前端面试知识点锦集(JavaScript篇)
Dec 28 Javascript
使用typescript构建Vue应用的实现
Aug 26 Javascript
javascript实现页面的实时时钟显示示例
Aug 06 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
用Zend Encode编写开发PHP程序
2010/02/21 PHP
PHP会员找回密码功能的简单实现
2016/09/05 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
PHP 99乘法表的几种实现代码
2020/10/13 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
js实现简洁的TAB滑动门效果代码
2015/09/06 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
详解vue组件化开发-vuex状态管理库
2017/04/10 Javascript
Vue Socket.io源码解读
2018/02/07 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
Vue 一键清空表单的实现方法
2020/02/07 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
Vue如何实现验证码输入交互
2020/12/07 Vue.js
原生JavaScript实现留言板
2021/01/10 Javascript
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
Python 字符串大小写转换的简单实例
2017/01/21 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
python实现可变变量名方法详解
2019/07/01 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
特步官方商城:Xtep
2017/03/21 全球购物
柒牌官方商城:中国男装优秀品牌
2017/06/30 全球购物
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
输入N,打印N*N矩阵
2012/02/20 面试题
智能电子应届生求职信
2013/11/10 职场文书
资料员的岗位职责
2013/11/20 职场文书
生日主持词
2014/03/20 职场文书
2014超市收银员工作总结
2014/11/13 职场文书