npm 包 get-object-with-attributes-that-changed 使用教程

阅读时长 4 分钟读完

当我们在进行前端项目开发的时候,难免会遇到需要判断对象内部属性的变化情况的情况。而 npm 包 get-object-with-attributes-that-changed 就是为解决这种需求而生的一个优秀的工具。本篇文章将详细介绍这个 npm 包的使用教程。

安装

使用 npm 进行安装:

使用方法

基本使用

该 npm 包提供的 getObjectWithAttributesThatChanged 方法,可以用来返回目标对象中被更改的部分。在使用时,只需调用该方法,并传入两个参数:

  1. targetObject:被检测的目标对象;
  2. newObject:新对象(一般是在原来的对象上进行修改后的产物),用于和 targetObject 进行比较,找出变更的地方。

下面是一个简单的示例代码:

-- -------------------- ---- -------
----- ---------------------------------- - ---------------------------------------------------

----- ------------ - -
  ----- -----
  ---- --
--

----- --------- - -
  ----- -----
  ---- --
--

----- ------- - ------------------------------------------------ -----------
---------------------
展开代码

运行结果如下:

从结果中可以看出,getObjectWithAttributesThatChanged 方法返回一个对象,该对象中包含了被修改的属性名和该属性新的值。

深度遍历

如果目标对象中嵌套了对象,那么也可以使用 getObjectWithAttributesThatChanged 方法来找到被更改的属性。下面是一个嵌套对象的示例代码:

-- -------------------- ---- -------
----- ------------ - -
  ----- -----
  ---- ---
  -------- -
    --------- ------
    ----- ------
    ------- --------
  -
--

----- --------- - -
  ----- -----
  ---- ---
  -------- -
    --------- ------
    ----- ------
    ------- --------
  -
--

----- ------- - ------------------------------------------------ -----------
---------------------
展开代码

运行结果如下:

上面的运行结果中,我们只能找到 age 属性的改变,而找不到嵌套在 address 对象内的属性变化。这是因为 getObjectWithAttributesThatChanged 方法默认只会遍历目标对象的一级属性,如果要想遍历整个嵌套树,就需要使用到深度遍历功能。下面是修改后的示例代码:

-- -------------------- ---- -------
----- ------------ - -
  ----- -----
  ---- ---
  -------- -
    --------- ------
    ----- ------
    ------- --------
  -
--

----- --------- - -
  ----- -----
  ---- ---
  -------- -
    --------- ------
    ----- ------
    ------- --------
  -
--

----- ------- - ------------------------------------------------ ---------- ------
---------------------
展开代码

运行结果如下:

通过将第三个参数设置为 true,我们可以获取到嵌套在 address 对象内的属性变化。在返回的对象中,'address.street' 是经过拼接后的嵌套属性名。

总结

get-object-with-attributes-that-changed 是一个非常方便的 npm 包,可以帮助我们快速找到对象内部属性的变化情况。在使用过程中,要注意其默认只会遍历目标对象的一级属性,如果需要遍历整个嵌套树,需要将第三个参数设置为 true。同时,本文中提到的示例代码也可以在 Github 中找到。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6006734f890c4f7277583899

纠错
反馈

纠错反馈