Есть ли один вкладыш в javascript, чтобы использовать массив строк в качестве пути к объекту? - PullRequest
0 голосов
/ 20 декабря 2018

допустим, у меня есть следующий массив:

let path = ['foo','bar']

И у меня есть этот элемент:

let item = {
    faa: 'whatever',
    foo: {
        bar: 'hello there', //general kenobi
        bor: 'nope'
    }
}

Я хочу получить доступ к "привету", используя что-то похожее на:

item[path] or item.path or item[path.join(".")]

Вы понимаете, это выполнимо и если да, то как?(конечно то что написано в этом вопросе не работает)

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Вы также можете использовать сторонние библиотеки, такие как Lodash.

, тогда вы можете использовать Lodash, вот так:

import {get} from Lodash

var x=get(item,path.join("."))

Хорошая вещь об этом, если элемент неесть 'Foo', вы не получите ошибку.Работает как безопасная навигация по объекту.

0 голосов
/ 20 декабря 2018

Вы можете сделать

let target = path.reduce((o, t)=> o ? o[t] : undefined, item)

Этот однострочник предназначен для того, чтобы не было ошибок при отсутствии совпадений: он просто возвращает undefined.

Демонстрация:

let item = {
    faa: 'whatever',
    foo: {
        bar: 'hello there', //general kenobi
        bor: 'nope'
    }
}
let path = ['foo','bar']
let target = path.reduce((o, t)=> o ? o[t] : undefined, item)
console.log(target)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...