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 相关文章推荐
防止文件缓存的js代码
Jan 10 Javascript
JavaScript中for-in遍历方式示例介绍
Feb 11 Javascript
浅谈js的setInterval事件
Dec 05 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
Aug 20 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
Sep 05 Javascript
JavaScript定时器实现的原理分析
Dec 06 Javascript
简单实现bootstrap导航效果
Feb 07 Javascript
详解vue 单页应用(spa)前端路由实现原理
Apr 04 Javascript
如何获取TypeScript的声明文件.d.ts
May 01 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
Nov 09 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
Mar 03 Javascript
vue-router中hash模式与history模式的区别
Jun 23 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
在php中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
windows8.1下Apache+Php+MySQL配置步骤
2015/10/30 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
Laravel5.5以下版本中如何自定义日志行为详解
2018/08/01 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
分享20款好玩的jQuery游戏
2011/04/17 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
JQuery的$和其它JS发生冲突的快速解决方法
2014/01/24 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
动态加载jQuery的方法
2015/06/16 Javascript
浅谈jquery页面初始化的4种方式
2016/11/27 Javascript
nodejs多版本管理总结
2018/04/03 NodeJs
一个简单的node.js界面实现方法
2018/06/01 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
微信小程序实现左滑删除效果
2020/11/18 Javascript
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
简单介绍Python中的decode()方法的使用
2015/05/18 Python
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
2019/01/08 Python
使用Python实现毫秒级抢单功能
2019/06/06 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
Python通过Pillow实现图片对比
2020/04/29 Python
使用K.function()调试keras操作
2020/06/17 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
美国非常受欢迎的Spa品牌:Bliss必列斯
2018/04/10 全球购物
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
家长会学生家长演讲稿
2013/12/29 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
留学经费担保书
2014/05/12 职场文书
维护民族团结演讲稿
2014/08/27 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript
Python机器学习之KNN近邻算法
2021/05/14 Python
Java存储没有重复元素的数组
2022/04/29 Java/Android