Bagaimana cara mengakses objek bersarang dengan jalur string? [duplikat]

Saya mencoba mengakses properti objek JavaScript dengan melewati jalur (string atau lainnya):

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

di mana 'profile.firstname' adalah jalannya.

Apakah ada cara untuk mengakses properti bersarang berdasarkan jalur dengan cara ini?

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

person awzx    schedule 20.12.2016    source sumber
comment
Juga Mengakses objek JavaScript bersarang dengan kunci string.   -  person Amadan    schedule 21.12.2016
comment
@Amadan ya, ada beberapa duplikat yang bagus tetapi sulit ditemukan :)   -  person Pointy    schedule 21.12.2016
comment
Mereka sangat mirip, tetapi IMO bukan duplikat, jawaban di bawah ini sangat berbeda dan itulah yang saya cari, karena saya dapat menggunakan jalur yang kompleks dengan pendekatan fungsional seperti itu   -  person awzx    schedule 21.12.2016
comment
Dengan Lodash: _.get(tableData[i], 'profile.firstname')   -  person GG.    schedule 21.12.2016
comment
Tanpa lodash: 'profile.firstname'.split('.').reduce((_, x) => _[x], tableData) =)   -  person cchamberlain    schedule 21.12.2016


Jawaban (1)


Ya, tetapi tidak dengan sintaksis yang Anda usulkan. Ini paling mudah dilakukan ketika jalur Anda berupa array string:

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
Saya akan mencobanya sekarang - person awzx; 21.12.2016
comment
Solusi ini bekerja dengan baik! - person awzx; 21.12.2016