Javascript 对象(object)合并操作实例分析

yizhihongxing

我来详细讲解一下 "Javascript 对象(object)合并操作实例分析" 的完整攻略,过程中包含两条示例说明。

1、 操作实例说明

在 JavaScript 开发中,我们经常需要将两个或多个对象合并为一个对象,这种操作就是对象的合并。常见的合并方式有浅合并和深合并两种方式。

1.浅合并:将多个对象合并为一个对象,如果属性名相同则直接覆盖原有属性即可。

const mobile1 = {
  brand: 'Apple',
  model: 'iPhone X',
  color: 'white',
};

const mobile2 = {
  model: 'iPhone 12',
  year: 2021,
};

const mobile = Object.assign({}, mobile1, mobile2);
console.log(mobile);  // 输出 { brand: 'Apple', model: 'iPhone 12',color: 'white', year: 2021 }
  1. 深合并:将多个对象中深层次的属性值进行合并。
const mobile1 = {
  brand: 'Apple',
  features: {
    camera: {
      front: true,
      rear: true,
    },
    battery: {
      capacity: 2716,
      standbyTime: 'Up to 10 days',
    },
  },
};

const mobile2 = {
  features: {
    camera: {
      front: false,
      zoom: 2,
    },
    battery: {
      capacity: 2930,
      talkTime: 'Up to 14 hours',
    },
    storage: {
      capacity: '128 GB',
    },
  },
};

function mergeDeep(target1, ...sources) {
  if (!sources.length) return target1;
  const source = sources.shift();
  if (typeof target1 !== 'object' || typeof source !== 'object') {
    return target1;
  }
  Object.keys(source).forEach((key) => {
    if (typeof source[key] === 'object') {
      if (!target1[key]) Object.assign(target1, { [key]: {} });
      mergeDeep(target1[key], source[key]);
    } else {
      Object.assign(target1, { [key]: source[key] });
    }
  });
  return mergeDeep(target1, ...sources);
}

const mobile = mergeDeep({}, mobile1, mobile2);
console.log(mobile);

2、 合并操作实现

首先我们先了解 Object.assign() 方法

Object.assign()

Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,返回目标对象。

2.1、 语法

Object.assign(target, ...sources)

2.2、 参数

  • target: 目标对象。
  • sources: 源对象,一个或多个。

2.3、 实例说明

如下代码,我们来演示 Object.assign() 方法的使用。

const mobile1 = {
  brand: 'Apple',
  model: 'iPhone X',
  color: 'white',
};

const mobile2 = {
  model: 'iPhone 12',
  year: 2021,
};

const mobile = Object.assign({}, mobile1, mobile2);
console.log(mobile);  // 输出 { brand: 'Apple', model: 'iPhone 12',color: 'white', year: 2021 }

这里通过 Object.assign() 方法将 mobile1mobile2 两个对象合并为 mobile 对象。其中 {} 表示我们需要合并对象的目标对象,这里用空对象表示。

深合并

如果需要合并对象中更深层次的属性值,可以使用递归实现。这里我们实现了一个 mergeDeep() 函数来实现深层次的合并。

2.4 实例说明

const mobile1 = {
  brand: 'Apple',
  features: {
    camera: {
      front: true,
      rear: true,
    },
    battery: {
      capacity: 2716,
      standbyTime: 'Up to 10 days',
    },
  },
};

const mobile2 = {
  features: {
    camera: {
      front: false,
      zoom: 2,
    },
    battery: {
      capacity: 2930,
      talkTime: 'Up to 14 hours',
    },
    storage: {
      capacity: '128 GB',
    },
  },
};

function mergeDeep(target1, ...sources) {
  if (!sources.length) return target1;
  const source = sources.shift();
  if (typeof target1 !== 'object' || typeof source !== 'object') {
    return target1;
  }
  Object.keys(source).forEach((key) => {
    if (typeof source[key] === 'object') {
      if (!target1[key]) Object.assign(target1, { [key]: {} });
      mergeDeep(target1[key], source[key]);
    } else {
      Object.assign(target1, { [key]: source[key] });
    }
  });
  return mergeDeep(target1, ...sources);
}

const mobile = mergeDeep({}, mobile1, mobile2);
console.log(mobile);

/**
 * 输出
 * {
 *    brand: 'Apple',
 *    features: {
 *       camera: {
 *          front: false,
 *          rear: true,
 *          zoom: 2
 *       },
 *       battery: {
 *          capacity: 2930,
 *          standbyTime: 'Up to 10 days',
 *          talkTime: 'Up to 14 hours'
 *       },
 *      storage: {
 *          capacity: '128 GB'
 *      }
 *    }
 * }
 */

这里通过 mergeDeep() 函数将 mobile1mobile2 两个对象合并为一个新对象 mobile{} 表示要合并的新对象。在 mergeDeep() 函数中我们通过递归实现深层次合并,访问属性时使用 source[key]target1[key] 实现访问对象的深层次属性值。

结语

以上就是 "Javascript 对象(object)合并操作实例分析" 的完整攻略,我们通过两个实例来学习了对象的合并操作。希望可以帮助到大家。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript 对象(object)合并操作实例分析 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • javascript引用对象的方法

    下面就是关于Javascript引用对象的方法的详细讲解。 什么是引用对象 Javascript中引用对象是一种特殊的对象,它不像普通对象一样存储值,而是存储对一个值的引用。当我们使用引用对象时,它们通常是用来访问、修改或删除关联值的。 引用对象的方法 引用对象有很多方法,下面我们来逐一讲解这些方法。 1. call() 和 apply() call()和a…

    JavaScript 2023年5月27日
    00
  • js中unicode转码方法详解

    JS中Unicode转码方法详解 JavaScript中的字符串可以通过Unicode字符集来表示,其中每个字符都有对应的Unicode编码值。在一些场景下,我们需要将一些特殊字符或非ASCII字符转换成Unicode编码表示。因此,本文将详细讲解在JavaScript中实现Unicode编码和解码的方法。 Unicode编码 在JavaScript中,可以…

    JavaScript 2023年5月19日
    00
  • Javascript中实现trim()函数的两种方法

    让我们开始讲解Javascript中实现trim()函数的两种方法。 一、背景介绍 在Javascript中,字符串是不可变的,也就是说无法在一个字符串中删除或添加字符,只能通过创建一个新的字符串来变相实现。而实际开发中会遇到需要删除字符串前后的空格的需求,这时候就需要用到trim()函数了。 二、方法一:使用正则表达式 我们可以使用正则表达式将字符串前后的…

    JavaScript 2023年5月27日
    00
  • jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】

    下面详细讲解如何使用jQuery的animate()方法实现背景色渐变效果,需要使用jQuery.color.js插件。具体步骤如下: 1. 引入jQuery和jQuery.color.js插件 在HTML文件中,我们需要引入jQuery和jQuery.color.js插件。 <script src="https://code.jquery.…

    JavaScript 2023年6月11日
    00
  • JavaScript 类的定义和引用 JavaScript高级培训 自定义对象

    本文将详细讲解如何定义和引用 JavaScript 类,以及如何创建自定义对象。 JavaScript 类的定义和引用 在 JavaScript 中,类可以通过关键字 class 来定义。类的构造函数中可以包含属性和方法,而实例则是使用 new 关键字来创建的。 下面是一个简单的类定义示例: class Person { constructor(name, …

    JavaScript 2023年5月27日
    00
  • JavaScript实现计算圆周率到小数点后100位的方法示例

    首先我们需要知道如何计算圆周率。圆周率是一个无理数,用希腊字母π表示,它的值约为3.14159265358979323846。 对于JavaScript实现计算圆周率到小数点后100位的方法,我们可以使用莱布尼兹公式来完成,公式如下: π/4=1-1/3+1/5-1/7+1/9-1/11+… 其中,π是我们要求的圆周率。 在实现过程中,我们将公式求和10…

    JavaScript 2023年5月28日
    00
  • 使用JS实现气泡跟随鼠标移动的动画效果

    使用JS实现气泡跟随鼠标移动的动画效果,可以分为以下几个步骤: 步骤1:HTML结构 首先,需要在HTML中创建一个容器元素,用于包含气泡,代码如下: <div id="container"></div> 步骤2:CSS样式 通过CSS对容器元素进行样式设置,如设置宽高、背景颜色和边框等,代码如下: #contai…

    JavaScript 2023年6月10日
    00
  • 一个简单的网站访问JS计数器 刷新1次加1次访问

    实现一个简单的网站访问计数器可以通过 JavaScript 来完成。我们需要在网站的页面中添加一个计数器的容器,然后通过 JavaScript 代码来动态修改这个容器中的数值即可。 以下是实现这个计数器的一些步骤: 1. 建立计数器的容器 我们需要创建一个 HTML 元素来表示这个计数器的容器,并且给它一个初始值。例如,在一个网站主页中,我们可以添加一个 &…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部