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 相关文章推荐
img的onload的另类用法
Jan 10 Javascript
Javascript 的addEventListener()及attachEvent()区别分析
May 21 Javascript
javascript数组快速打乱重排的方法
Jan 02 Javascript
jQuery中[attribute]选择器用法实例
Dec 31 Javascript
jQuery实现仿百度帖吧头部固定导航效果
Aug 07 Javascript
jQuery实现内容定时切换效果完整实例
Apr 06 Javascript
jQuery实现图像旋转动画效果
May 29 Javascript
javascript与jquery动态创建html元素示例
Jul 25 Javascript
js中document.write和document.writeln的区别
Mar 11 Javascript
详解React+Koa实现服务端渲染(SSR)
May 23 Javascript
基于vue实现圆形菜单栏组件
Jul 05 Javascript
手把手带你入门微信小程序新框架Kbone的使用
Feb 25 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下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
php使用Imagick生成图片的方法
2015/07/31 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
jquery 选项卡效果 新手代码
2011/07/08 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
2012/07/23 Javascript
js异步加载的三种解决方案
2013/03/04 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
ie8模式下click无反应点击option无反应的解决方法
2014/10/11 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
js如何打印object对象
2015/10/16 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
最丑的时钟效果!js canvas时钟制作方法
2016/08/15 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
微信小程序云开发如何使用云函数生成二维码
2019/05/18 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
python字符串对其居中显示的方法
2015/07/11 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
由面试题加深对Django的认识理解
2019/07/19 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
使用pyqt 实现重复打开多个相同界面
2019/12/13 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
2020/10/12 Python
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
诚信承诺书范文
2014/03/27 职场文书
青年安全生产示范岗事迹材料
2014/05/04 职场文书
违章停车检讨书
2014/10/21 职场文书
佛光寺导游词
2015/02/10 职场文书
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers