用JavaScript解析对象名路径

用JavaScript解析对象名路径,javascript,Javascript,我有一个目标: const list = { library: { books: { count: 100 } } } 我有一个数组: const key = [ 'library', 'books', 'count' ] 我希望使用该数组从对象中获取值100 我尝试过仅使用阵列: 常数列表={ 图书馆:{ 书籍:{ 计数:100 } } } const key=['library','books','count']

我有一个目标:

const list = {
    library: {
        books: {
            count: 100
        }
    }
}
我有一个数组:

const key = [ 'library', 'books', 'count' ]
我希望使用该数组从对象中获取值100

我尝试过仅使用阵列:

常数列表={ 图书馆:{ 书籍:{ 计数:100 } } } const key=['library','books','count']
console.loglist[key]我所知道的最简洁的方法是使用reduce:

常数列表={ 图书馆:{ 书籍:{ 计数:100 } } } const key=['library','books','count'] //简单一行 让val=key.reduceobj,key=>obj[key],list
console.logval我知道的最简洁的方法是使用reduce:

常数列表={ 图书馆:{ 书籍:{ 计数:100 } } } const key=['library','books','count'] //简单一行 让val=key.reduceobj,key=>obj[key],list
console.logval试试这个。较短的版本。只是为了好玩:

常数列表={ 图书馆:{ 书籍:{ 计数:100 } } } const key=['library','books','count']
控制台。日志列表[键[0]][键[1]][键[2]]试试这个。较短的版本。只是为了好玩:

常数列表={ 图书馆:{ 书籍:{ 计数:100 } } } const key=['library','books','count']
console.loglist[key[0]][key[1]][key[2]]您试图实现的就是名称路径解析。 您可以使用reduce或正则for迭代来实现它

我在这里准备了一些基准:

for循环比reduce快10%

在Chrome 65.0.3325/Windows 10 0.0.0中测试

For循环 更快,也许更容易理解

//名称路径解析器 函数resolvePathtarget,namepath{ 对于let i=0;ialert resolvePathlist,key//outputs 100您试图实现的称为名称路径解析。 您可以使用reduce或正则for迭代来实现它

我在这里准备了一些基准:

for循环比reduce快10%

在Chrome 65.0.3325/Windows 10 0.0.0中测试

For循环 更快,也许更容易理解

//名称路径解析器 函数resolvePathtarget,namepath{ 对于let i=0;i