joken-前端工程师

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: :: 管理 ::

lodash get

lodash 的 get 方法,它主要用于安全地访问对象的属性,避免因为中间属性不存在而导致的异常。这个方法可以按照指定的路径获取对象的属性值。比如,假设有一个对象 user,包含了 nameaddress 属性,你可以这样使用 get 方法:

const _ = require('lodash');

const user = {
  name: 'John Doe',
  address: {
    city: 'New York',
    postalCode: '10001'
  }
};

// 使用 lodash 的 get 方法获取属性值
const cityName = _.get(user, 'address.city');
console.log(cityName);  // 输出: New York

// 如果属性不存在,可以提供一个默认值
const countryName = _.get(user, 'address.country', 'USA');
console.log(countryName);  // 输出: USA

在这个例子中,_.get(user, 'address.city') 将返回 user 对象中 address 属性的 city 属性值,如果中间的 address 属性不存在也不会导致错误。

js实现lodash get类似方法

实现类似于 lodash 的 get 方法,可以编写一个 JavaScript 函数来实现。get 方法通常用于安全地获取对象的深层属性,避免因为中间属性为 nullundefined 而导致的异常。

以下是一个简单的实现示例:

function get(object, path, defaultValue) {
    // 将路径分割成数组
    const pathArray = Array.isArray(path) ? path : path.split('.');
    
    // 使用 Array.prototype.reduce 遍历路径数组,逐级访问对象属性
    return pathArray.reduce((obj, key) => 
        (obj && typeof obj[key] !== 'undefined') ? obj[key] : defaultValue, object);
}

// 示例用法:
const obj = {
    a: {
        b: {
            c: 10
        }
    }
};

console.log(get(obj, 'a.b.c')); // 输出 10
console.log(get(obj, ['a', 'b', 'c'])); // 输出 10
console.log(get(obj, 'a.b.x', 'default')); // 输出 'default',因为路径 'a.b.x' 不存在
console.log(get(obj, 'a.b.c.x', 'default')); // 输出 'default',因为路径 'a.b.c.x' 不存在

这个 get 函数的关键是利用 Array.prototype.reduce 方法来逐级访问对象的属性。如果路径中某个属性不存在或者为 nullundefined,则返回指定的 defaultValue(可选参数,默认为 undefined)。

这种实现方式类似于 lodash 中 get 方法的核心逻辑,可以安全地获取深层嵌套的对象属性值。

posted on 2024-08-01 21:39  joken1310  阅读(156)  评论(0编辑  收藏  举报