在js中经常会出现嵌套调用这种情况,如a.b.c.d.e,但是这么写很容易抛出异常,你需要这么写 a&&a.b&&a.b.c&&a.b.c.d&&a.b.c.d.e但是显得有些啰嗦与冗长了。特别是在graphql中,这种嵌套调用更是难以避免。这里就需要一个get函数,使用get(a, ‘b.c.d.e’)简单清晰,并且容错性提高了很多。

  1. 代码实现
function get(source, path, defaultValue=undefined){const paths = path.replace(/\[(\d+)\]/g,".$1").split(".")let result = sourcefor(const p of paths) {result = Object(result)[p];if(result == undefined){return undefined}}return result;
}
console.log(get({a: null}, "a.b.c", 3))
console.log(get({a: undefined}, "a", 3))
console.log(get({a: null}, "a", 3))
console.log(get({a: [{b: 1}]}, "a[0].b", 3))
  1. 代码实现不考虑数组的情况
const _get = (object, keys, val) => {return keys.split(/\./).reduce((o, j) => ((o || {})[j]), object) || val
}

javascript面试-实现lodash的\_.get相关推荐

  1. javascript面试_在编码面试中需要注意的3个JavaScript问题

    javascript面试 JavaScript is the official language of all modern web browsers. As such, JavaScript que ...

  2. JavaScript面试的完美指南(开发者视角)

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 面试季手册. 原文:javascript 面试的完美指南(开发者视角) 作者:前端小智 Fundebug经授权转载,版 ...

  3. 如何在 JavaScript 面试中过五关斩六将?

    JavaScript 面试不容易.我觉得难,你也觉得不容易,大家的意见不谋而合.在 JavaScript 面试中被问问题的概率通常很高.那么该如何破解 JS 面试?突破口在哪儿?本文旨在通过学习基本概 ...

  4. 前端面试题汇总(JavaScript面试纯干货)

    前端面试题汇总(JavaScript面试纯干货) 1 闭包 闭包就是能够读取其他函数内部变量的函数 闭包是指有权访问另⼀个函数作⽤域中变量的函数,创建闭包的最常⻅的⽅式就是在⼀个函数内创建另⼀个函数, ...

  5. JavaScript面试大全

    JavaScript面试大全 1.求y和z的值是多少? var x = 1; var y = 0; var z = 0; function add(n){n=n+1;} y = add(x); fun ...

  6. 【笔记-面试】《imooc -前端跳槽面试技巧》、《imooc- 揭秘一线互联网企业 前端javaScript高级面试》、《imooc-前端javascript面试技巧》

    20190204:<imooc -前端跳槽面试技巧> 第01章 课程介绍 01-01 课程导学 一.一面知识点 1.面试技巧 页面布局类 2.css盒模型dom事件类 3.http协议类 ...

  7. 好程序员Java教程分享JavaScript面试问题及答案(一)

    好程序员Java教程分享JavaScript面试问题及答案(一) 1.使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个 ...

  8. JavaScript 面试中常见算法问题详解

    JavaScript 面试中常见算法问题详解,翻译自 https://github.com/kennymkchan/interview-questions-in-javascript.下文提到的很多问 ...

  9. 前端必备,JavaScript面试问题及答案

    前端必备,JavaScript面试问题及答案 1.使用 typeof bar === "object" 来确定 bar 是否是对象的潜在陷阱是什么?如何避免这个陷阱? 尽管 typ ...

最新文章

  1. linux系统CPU,内存,磁盘,网络流量监控脚本
  2. DRAGAN + SRCNN 的简单理解
  3. android手机连接无线路由器上网设置,怎样用手机设置无线路由器上网?
  4. java简单投票系统_JSP实现的简单Web投票程序代码
  5. makefile常用讲解(2)
  6. win7下部署docker教程(三步搞定)
  7. 浏览器的加载顺序与页面性能优化
  8. php解析markdown前端渲染,Vuejs使用 vue-markdown 来渲染评论方法
  9. 西威变频器avo下载调试资料_步骤详解|西门子PLCS7-1200通过周期性通讯PZD通道时组态和下载...
  10. Lrc2srt精灵,增加自定义输出编码
  11. bochs上网镜像怎么上网_bochs win7镜像可上网版
  12. 64位win10专业版下载地址
  13. 机械硬盘与固态硬盘的区别
  14. 不用光盘,教你一招让win10系统恢复出厂设置
  15. kali安装配置使用手册
  16. 用Python进行自然语言处理 读书笔记 第一章
  17. 产品经理和项目经理谁才是项目管理界的NO.1?
  18. p5.js 写个连连看
  19. 虚拟机提示“虚拟设备在启动时将处于断开连接状态”
  20. (转)电阻在电路中的十二种作用

热门文章

  1. Recast源码解析(一):射线实现原理
  2. CityEngine -- CGA语法学习
  3. java如何打印棋盘_java打印国际象棋棋盘的方法
  4. java ftpclient限速,加快Apache Commons FTPClient传输
  5. RotatedRect参数详解
  6. 巨烽数字化采购项目启动,甄云助力医疗影像显示领军企业数智化升级
  7. IDEMIA收购X Core Technologies的金属支付卡业务并推出Smart Metal Art产品
  8. 七雄争霸mysql修改_七雄争霸单机版
  9. android简单阅读app实例,PureRead 一个简单而精致的轻量级碎片化阅读App
  10. 天玑820相当于骁龙多少处理器 天玑1100相当于骁龙多少 天玑820怎么样