首页 > 其他分享 >lodash get 使用,js如何实现lodash get

lodash get 使用,js如何实现lodash get

时间:2024-08-01 21:39:10浏览次数:8  
标签:obj lodash get js address const 属性

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 方法的核心逻辑,可以安全地获取深层嵌套的对象属性值。

标签:obj,lodash,get,js,address,const,属性
From: https://www.cnblogs.com/jocongmin/p/18337628

相关文章

  • Jmeter(五十二)PostMan的json格式文件转换为jmx文件
    他年我若为青帝,报与桃花一处开               ---黄巢一、环境准备1.maven2.postman3.jmeter 二、将PostMan的接口请求导出来  export即可三、拉取项目并构建gitclonehttps://github.com/Loadium/postman2jmx.git拉取完成进行......
  • “postman请求JSON格式,Body内数据无法被idea后端接收,值为null“问题的解决方式
    问题描述:传递数据一切正常,但是:原因剖析:这是因为我们实体类里面属性的命名格式不符合驼峰命名,比如我这种“大写字母开头如CAD”/“一个小写字母+一个大写字母如aDddddd”都不行。解决方法:方法1:不推荐,不好用把自己实体类中的属性的名字都改成标准格式,要么是“全小写如id......
  • es6-promise-polyfill 自己实现promise.js
       https://github.com/lahmatiy/es6-promise-polyfill/blob/master/promise.js  (function(global){////CheckfornativePromiseandithascorrectinterface//varNativePromise=global['Promise'];varnativePromiseSupported=NativePr......
  • JSEncrypt 传输加密 -前端
    1.有些特殊要求,要求前端传给后端参数时把一些密码,手机号等加密,具体使用方式如下引入 jsencrypt.min.js,我是在app中使用,有些 jsencrypt.min.js文件只支持h5,使用的时候会报错,这个jsh5,app都可以使用,js文件内容在最下面import{JSEncrypt}from'@/common/utils/jsencrypt.m......
  • JSP学生宿舍管理系统599o3(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
    系统程序文件列表用户功能:宿管,学生,班级,宿舍楼宇,宿舍分配,来访登记开题报告内容JSP学生宿舍管理系统开题报告一、选题背景与意义1.选题背景随着我国经济的飞速发展和科学技术的全面进步,以计算机技术、通信技术和数据库技术为基础的信息系统正处于蓬勃发展的黄金时......
  • JSP学生宿舍管理系统66a58(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
    系统程序文件列表项目功能:学生,公寓信息,公寓类型,寝室类型,寝室信息,卫生检查,住宿信息,充值信息,违纪信息,学生账户开题报告内容JSP学生宿舍管理系统开题报告一、引言1.1研究背景随着高校招生规模的不断扩大,学生宿舍管理日益成为高校后勤工作的重要组成部分。传统的......
  • JSP学生宿舍管理系统24fu4(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
    系统程序文件列表项目功能:学生,宿舍信息,卫生检查,电费信息,报修申请,换寝申请,寄存申请,留言信息,检修信息,检修评价,公告信息开题报告内容JSP学生宿舍管理系统 开题报告一、引言1.1研究背景随着高校教育事业的快速发展,学生宿舍作为学生在校期间的重要生活空间,其管......
  • JSP学生宿舍管理系统2z933(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
    系统程序文件列表项目功能:班级,学生,维修人员,宿舍公告,宿舍信息,宿舍安排,报修评价,报修处理,报修信息,在线咨询开题报告内容JSP学生宿舍管理系统 开题报告一、引言1.1研究背景随着高校招生规模的不断扩大,学生宿舍管理面临着诸多挑战,如宿舍分配、日常管理、安全监控......
  • Python爬虫 - js逆向之扣出某平台的_signature加密字段
    前言好久没有做逆向案例分析了,最近都在看同行朋友写好的案例,感觉学到很多,算是取长补短了不多bb,机缘巧合下,拿到个目标网站分析首先抓个包,就看到请求参数里带着这几个参数主要就是_signature了,其他的参数都不重要得想必你一看就知道啥意思了。行,开始分析_signature......
  • Next.js 中为什么 App Router 可能是未来,但 Pages Router 仍然重要?
    Next.js作为一个强大的React框架,为开发者提供了两种路由系统:AppRouter和PagesRouter。这两种路由系统各有特色,适用于不同的场景。本文将深入探讨这两种路由系统的区别、优缺点和使用场景,帮助你做出最佳选择。AppRouter:新一代的路由革命AppRouter是Next.js13引入的......