Как получить доступ к вложенному объекту со строковыми путями?

Я пытаюсь получить доступ к свойствам объекта JavaScript, передав путь (строку или иным образом):

// In a loop
tableData[i].profile.firstname

где 'profile.firstname' это путь.

Есть ли способ получить доступ к вложенному свойству на основе пути таким образом?

let firstnamePath = 'profile.firstname'
let firstname     = tableData[i][firstnamePath]

person awzx    schedule 20.12.2016    source источник
comment
@Amadan да, есть несколько хороших дубликатов, но их сложно найти :)   -  person Pointy    schedule 21.12.2016
comment
Они очень похожи, но ИМО не дублирует, ответ ниже совсем другой, и это то, что я искал, потому что я могу использовать сложные пути с таким функциональным подходом.   -  person awzx    schedule 21.12.2016
comment
С Лодашем: _.get(tableData[i], 'profile.firstname')   -  person GG.    schedule 21.12.2016
comment
Без лодаша: 'profile.firstname'.split('.').reduce((_, x) => _[x], tableData) =)   -  person cchamberlain    schedule 21.12.2016


Ответы (1)


Да, но не с предложенным вами синтаксисом. Это проще всего сделать, когда ваш путь представляет собой массив строк:

const tableData = (
  { profile: { firstname: 'jim', lastname: 'johnson' }
  }
)
                                                                    
const path = [ 'profile', 'firstname' ]

const valueAtPath = path.reduce((_, x) => _[x], tableData)

console.info(valueAtPath)

person cchamberlain    schedule 20.12.2016
comment
Я попробую это прямо сейчас - person awzx; 21.12.2016
comment
Это решение прекрасно работает! - person awzx; 21.12.2016