返回

从对象中获取或设置值,不再害怕 undefined 了

见解分享

前言

最近在研究 JavaScript 的一些特性和最佳实践,其中一个重要的方面就是如何安全地从对象中获取或设置值。在实际开发中,我们经常会遇到需要从嵌套对象中获取某个特定属性值的情况。如果属性不存在或者值为 undefined,直接访问会抛出异常,导致页面白屏或服务异常。

为了解决这个问题,我编写了一个简单的开源库,提供两个函数:getObjValuesetObjValue。这两个函数可以安全地从对象中获取或设置值,即使属性不存在或值为 undefined。

安装和使用

该开源库可以在 GitHub 上找到:https://github.com/zzuwzj/get-set-obj

安装:

npm install --save get-set-obj

用法:

import { getObjValue, setObjValue } from 'get-set-obj';

const obj = {
  a: {
    b: {
      c: 'value'
    }
  }
};

// 安全获取值
const value = getObjValue(obj, 'a.b.c'); // 'value'

// 安全设置值
setObjValue(obj, 'a.b.d', 'new value');

console.log(obj); // { a: { b: { c: 'value', d: 'new value' } } }

函数详解

getObjValue(obj, path)

getObjValue 函数用于安全地从对象中获取指定路径下的值。

参数:

  • obj: 要获取值的 JavaScript 对象。
  • path: 值的路径,是一个点分隔的字符串。例如,'a.b.c' 表示从对象 obj 中获取 obj.a.b.c 的值。

返回值:

  • 如果路径存在并且值为非 undefined,返回该值。
  • 如果路径不存在或值为 undefined,返回 undefined

setObjValue(obj, path, value)

setObjValue 函数用于安全地向对象中设置指定路径下的值。

参数:

  • obj: 要设置值的 JavaScript 对象。
  • path: 值的路径,是一个点分隔的字符串。例如,'a.b.c' 表示在对象 obj 中设置 obj.a.b.c 的值。
  • value: 要设置的值。

返回值:

  • 设置成功时返回 true
  • 如果路径不存在或无法设置值时返回 false

示例

获取嵌套对象的值

const obj = {
  user: {
    name: 'John Doe',
    email: 'john.doe@example.com'
  }
};

const name = getObjValue(obj, 'user.name'); // 'John Doe'
const email = getObjValue(obj, 'user.email'); // 'john.doe@example.com'

设置嵌套对象的值

const obj = {
  user: {
    name: 'John Doe'
  }
};

const success = setObjValue(obj, 'user.email', 'john.doe@example.com'); // true

console.log(obj); // { user: { name: 'John Doe', email: 'john.doe@example.com' } }

优点

使用 getObjValuesetObjValue 函数的优点包括:

  • 避免异常: 防止从 undefined 取值引发异常,提高代码稳定性。
  • 简化代码: 无需再编写复杂的代码来检查属性是否存在或值为 undefined。
  • 提高可读性: 代码更简洁易懂,减少了认知负担。
  • 开源且免费: 可以在 GitHub 上免费获取和使用该开源库。

总结

安全地从对象中获取或设置值对于 JavaScript 开发至关重要。get-set-obj 开源库提供的两个函数 getObjValuesetObjValue 可以轻松解决此问题,提高代码质量和可靠性。鼓励开发者在项目中使用这些函数,以增强应用程序的稳定性和可维护性。