背景:

开发中经常遇到取值属性的时候,需要校验数值的有效性。

例如:

获取props对象里面的friends属性

props.user &&
props.user.friends &&
props.user.friends[0] &&
props.user.friends[0].friends

对于深层的对象,代码会写的特别长,为了避免这种情况,可以使用现成的方法。

方法一: babel-plugin-idx插件

import idx from 'idx';const getFriends = idx(props, _.user.friends[0].friends);

方法二:_.get(object, path, [defaultValue]) (lodash中的方法)

其中path的数据类型是array或者string。

而且array中的每一项都是字符串。

import _ from 'lodash';_.get(props, ["props", "user", "friends", "0", "friends"])或者_.get(props, "props.user.friends[0].friends")

最后一项default值是当取值出错时的默认返回值

_.get(props, "props.user.friends.friends", "default")  // "default"
// 最后返回default

转载于:https://www.cnblogs.com/lyraLee/p/11051444.html

校验正确获取对象或者数组的属性方法(babel-plugin-idx/_.get)相关推荐

  1. 从零开始学前端:中括号代替点操作,获取对象,自定义标签属性 --- 今天你学习了吗?(JS:Day3)

    从零开始学前端:程序猿小白也可以完全掌握!-今天你学习了吗?(JS) 复习:从零开始学前端:初识函数,合法属性与自定义属性 - 今天你学习了吗?(JS:Day2) 文章目录 从零开始学前端:程序猿小白 ...

  2. 微信小程序使用setData方法修改data中对象或数组的属性值

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站 微信小程序使用setData方法修改data中对象或数组的属性值 使用微信小程序开发时,涉及到data ...

  3. 微信小程序更新二维数组中的对象或数组的属性值

    微信小程序更新二维数组中的对象或数组的属性值,这里可能有两种情况 1.微信小程序更新二维数组中的对象的属性值 更新二维数组中的某个对象的属性值,代码如下 js 代码 data: {familys:[{ ...

  4. java js对象转字符串数组_js 转json格式的字符串为对象或数组(前后台)的方法

    一.前台 // 转换成对象 var myObject = JSON.parse(_data); alert("对象:"+myObject.msg); // 转换成数组 var my ...

  5. ts 数组转换对象 对象转换数组的公共方法

    1.封装 在项目的utils=>index.ts文件内写方法 // 封装数组转换对象 对象转换数组的公共方法 type=1是 数组(例[1,2,3]) ==>对象数组(例[{vaue:1} ...

  6. php中多维数组的长度,php中count获取多维数组长度的方法

    这篇文章主要介绍了php中count获取多维数组长度的方法,实例分析了数组的原理并总结了数组长度计算的方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了php中count获取多维数组长度的实 ...

  7. php对象数字属性,PHP获取对象的纯数字属性

    ##php的对象属性 我们知道获取php的对象属性用箭头: echo $obj->name; 如果属性名是一个变量,那么可以用: $var = 'name'; echo $obj->$va ...

  8. php中count获取多维数组长度的方法

    转自:http://www.jb51.net/article/57021.htm 本文实例讲述了php中count获取多维数组长度的实现方法.分享给大家供大家参考.具体分析如下: 先来看看下面程序运行 ...

  9. 深入vue2响应式原理,在对象或数组新增属性无响应解决方法

    前言 该问题只存在vue2, 基于Object.defineProperty的特性,vue3中的proxy已经解决了该问题,但也存在兼容性问题,例如IE系统任意版本都不支持. vue2是如何追踪数据变 ...

最新文章

  1. Sqlserver:sp_recompile的副作用
  2. 小程序时间转换成时间戳
  3. To rename a docker image
  4. proxytable代理不生效_民法典房屋买卖合同卖方代签合同生效吗
  5. matlab计算频域动态性能指标,基于MATLAB自动控制系统时域频域分析与仿真.doc
  6. python 高阶函数一 概念
  7. axios与ajax对比,AjAX 步骤和对比fetch和axios
  8. 泰坦尼克号的数据集的下载 tensflow
  9. Android webview数据获取 webview抓取
  10. 使用Python在Windows环境下切换输入法
  11. python定时发qq消息_Python如何实现定时发送qq消息
  12. 单个正态总体均值的区间估计_总体均值的区间估计 (正态总体: σ2 已知实例).pdf...
  13. 2019备考[嵌入式系统设计师]你准备好了吗?
  14. 操作系统-进程映像、虚拟内存
  15. 第四届中国(广东)国际“互联网+”博览会今日在佛山开幕 聚集工业“智慧”推动产业加速转型...
  16. 单片机输入和输出模式简要说明
  17. 解决google打开以后跳转到hao123
  18. 华为云电脑+teamviewer ssh实现手机远程操控服务器
  19. 入职两年,我和业务撕了108次逼
  20. 使用window小娜实现文本转语音

热门文章

  1. 在 Visual Basic .NET 或 JScript 代码中使用早期绑定
  2. 如何快速实现HTML编辑器.NET组件
  3. 我的个人博客搭建记录
  4. 线性回归介绍及分别使用最小二乘法和梯度下降法对线性回归C++实现
  5. 【GStreamer】gstreamer工具详解之:ges-launch-1.0
  6. gis怎么改鼠标滚轮缩放_ArcGIS鼠标滚轮方向之代码篇
  7. Jenkins 流水线 获取git 分支列表_jenkins的安装和配置 自动化部署 码云 gitee
  8. Java多线程复习:1(进程和线程、并发和并行)
  9. 信息记录拉取失败_天猫入驻为什么失败?猫店侠做详细解读
  10. python类和对象课件_简单解释Python的类和对象