首页 > 解决方案 > 使用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 表达式?

标签: javascripteval

解决方案


Lodash_.get()可以帮助您处理案例 1 和 2,而案例 3 也需要_.last()

注意:为这个用例导入整个 lodash 库在 Web 浏览器中会有点过分,所以你应该使用 tree shaking 以及 webpack 和 babel lodash 插件来减小大小,或者只导入lodash/getlodash/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>


推荐阅读