如何使用Lodash安全访问数组指定索引元素的对象属性?
Lodash获取数组指定索引对象属性的实现方案
你此前认为_.get仅适用于普通对象是认知偏差,JavaScript中数组本质是特殊的对象类型,数字索引属于数组的合法属性键,_.get原生支持数组索引路径的安全访问,完全适配你的业务场景。
核心写法
要实现「路径任意节点不存在时统一返回null」的需求,直接使用_.get即可,不需要写多层短路与判断,两种等价写法如下:
// 字符串路径写法,和原生属性访问语法一致,可读性更强 _.get(personsDetails, '[1].name', null) // 数组路径写法,不需要额外写索引方括号,容错性更高 _.get(personsDetails, [1, 'name'], null)
边界覆盖说明
上述写法会自动处理所有空值场景:
- 当
personsDetails为初始值null时,返回null - 当接口返回数组长度为1、索引1位置无元素时,返回
null - 当索引1位置的对象不存在
name属性时,返回null - 当路径完整存在时,正常返回对应
name属性值
效果验证
你可以用以下测试用例验证逻辑正确性:
// 初始状态为null console.log(_.get(null, '[1].name', null)) // 输出: null // 数组仅包含1个元素 console.log(_.get([{name:'king',id:2}], '[1].name', null)) // 输出: null // 数组包含2个完整元素 console.log(_.get([{name:'king',id:2}, {name:'queen',id:3}], '[1].name', null)) // 输出: 'queen' // 第二个元素缺失name属性 console.log(_.get([{name:'king',id:2}, {id:3}], '[1].name', null)) // 输出: null
如果需要访问数组其他索引位置的属性,只需要修改路径里的索引值即可,比如访问第一个元素的id属性可以写为_.get(personsDetails, '[0].id', null)。
内容的提问来源于stack exchange,提问作者Naruto
相关产品推荐
相关产品推荐

