js实现一个多层级的对象合并

1.思路分析

1.我们要实现,如果目标对象中的属性具与源对象有相同的键并且相同的键的值也为对象,则将此对象也进行相同规则的合并,否则属性将被源对象中的属性覆盖,并且不同的键会同时存在
2.首先要理解,target是主体,遍历sources对象,判断如果target对象存在相同键并且同时为对象,递归调用合并方法,否则将target对象键值替换
3.返回新对象

2.代码

function merge(target) {
  for (let i = 1, j = arguments.length; i < j; i++) {
    let source = arguments[i] || {};
    for (let prop in source) {
      if (source.hasOwnProperty(prop)) {
        let value = source[prop];
        if (value !== undefined) {
          target[prop] = value;
        }
      }
    }
  }

  return target;
};

测试
merge({}, {q: 1, series: [{a: 1, b: 2, data: [4]}]}, {a: 2, series: [{ a: 3, b: 4, data: [1, 2, 3] }] })

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写了个程序,对Pandas的绝大部分函数及其说明进行了中文翻译。原网址:http://pandas.pydata....
    TSIANG阅读 5,682评论 0 4
  • 入门与进阶 第一章 进入编程 1,如何快速运行一段js代码? 方式1:浏览器开发者工具。可以使用快捷键option...
    潇潇潇潇潇潇潇阅读 901评论 0 0
  • 日常学习知识点总结(JS篇) 1、闭包: 闭包就是函数中的函数,里面的函数可以访问外面函数的变量,外面的变量是内部...
    依稀_Sting阅读 2,111评论 0 1
  • 寻找入口文件 执行构建 script/config.js 的执行过程// 判断环境变量是否有 TARGET// 如...
    翔子丶阅读 449评论 0 1
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 5,753评论 0 5