Функция полезности от this answer позволяет легко получить доступ к вложенным свойствам объектов и возвращает null (или undefined), если одно из родительских свойств не существует.Доступ к вложенным массивам/свойствам в javascript
оригинальный код:
get = function(obj, key) { return key.split(".").reduce(function(o, x) { return (typeof o == "undefined" || o === null) ? o : o[x]; }, obj); } get(user, 'loc.lat') // 50 get(user, 'loc.foo.bar') // undefined
Я действительно хочу, чтобы использовать это, но мне нужно, чтобы иметь возможность работать с вложенными массивами, а также.
Примеры:
var childArray = [0,1,2]
var parentArray = [{myArray: childArray}]
var obj = {key: parentArray}
Я хочу продлить функцию полезности, как это:
get(obj, 'key[0].myArray[2]'); // 2
get(obj, 'key[0].foo[2]'); // null
get(obj, 'key[0].myArray[42]'); // null
А в идеале он должен также быть в состоянии оценить это, а
var childArray = [0,1,2]
var parentArray = [childArray, childArray]
var obj = {key: parentArray}
get(obj, 'key[1][0]'); // 0
get(obj, 'foo[1][0]'); // null
Вопрос:
Возможно ли получить доступ к массиву arr
с заданной строковой ссылкой, например "arr[0]"
(без регулярного выражения, чтобы удалить скобки ...)?
Знаете ли вы более элегантное решение, которое достигает результата, представленного в примерах выше?
Просто измените "путь": 'получить (объект, 'key.0.myArray.2')' ([скрипку] (https://jsfiddle.net/1twrxeor/)) – Andreas
Пожалуйста, сделайте это ответом, я поддержу и, возможно, приму это как решение. –