Использование dottie js для доступа к элементам в массиве (с использованием индекса) - PullRequest
0 голосов
/ 22 декабря 2019

Я использую 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 выражений против объекта?

1 Ответ

0 голосов
/ 22 декабря 2019

Lodash _.get() может помочь вам в случаях 1 и 2, в то время как для 3 потребуется также _.last().

Примечание: импорт всей библиотеки lodash для этих случаев использованиябыло бы излишним в веб-браузере, поэтому вы должны использовать встряхивание деревьев и плагины 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>
...