javascript - 使用dottie js访问数组中的元素(使用索引)
问题描述
我正在使用 dottie 安全地访问对象中的值。像这样的东西
var dottie = require("dottie")
var x = { names: [{name: 'hello'},{name: 'world'}] }
dottie.get(x, 'names')
但是,我看到尝试类似的问题:
var dottie = require("dottie")
var x = { names: [{name: 'hello'},{name: 'world'}] }
dottie.get(x, 'names[0]')
和
var dottie = require("dottie")
var x = { names: [{name: 'hello'},{name: 'world'}] }
dottie.get(x, 'names[names.length-1]')
是否有任何图书馆可以让我安全地执行以下操作?基本上是针对一个对象的 eval 表达式?
解决方案
Lodash_.get()
可以帮助您处理案例 1 和 2,而案例 3 也需要_.last()
。
注意:为这个用例导入整个 lodash 库在 Web 浏览器中会有点过分,所以你应该使用 tree shaking 以及 webpack 和 babel lodash 插件来减小大小,或者只导入lodash/get
和 lodash/last
包。
var x = { names: [{name: 'hello'},{name: 'world'}] }
console.log(_.get(x, 'names'))
var x = { names: [{name: 'hello'},{name: 'world'}] }
console.log(_.get(x, 'names[0]'))
var x = { names: [{name: 'hello'},{name: 'world'}] }
console.log(_.last(_.get(x, 'names')))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>
推荐阅读
- python - 未选择 Youtube 标题数据。(在 selenium 中)
- git - 什么是编辑和管理我在亚马逊 EC2 上托管的网站的简单方法
- flutter - 找不到正确的提供者
在这个 xxxx 小部件上方 - unit-testing - 如何在结构内传递结构数组?
- file - 资产文件夹 Symfony 4 中的 CSS 和 JS 文件
- git - 进行壁球合并时如何在 GitHub 上强制执行提交消息策略?
- html - css hover 不适用于我的 html 中的 col
- ebay-api - eBay Feed API -> uploadFile 脚本在本地 PC 上工作,但在实时服务器上不工作
- firebase - 尝试显示来自 Firebase Firestore 的数据
- hyperledger-fabric - Hyperledgerfabric - 安装示例二进制 docker 镜像