繁体   English   中英

JavaScript-使用键数组从嵌套对象中检索值

[英]JavaScript - retrieve value from nested object, using array of keys

如何使用键数组从嵌套对象中获取值?

// my sample object
var obj = {
    type            : "Purchase",
    category        : "Apartment",
    categoryOptions : {
       apartment : {
           floors    : {
               type        : "number",
               value       : null,
               placeholder : "Total Floors"
           },
       },
    },
}
var keysArray = ["value", "floors", "apartment", "categoryOptions"]

我尝试使用array.reduceRight实现此目的,但无法使其正常工作。

这是我尝试过的:

var roadToValue = keysArray.reduceRight(
    function(previousValue, currentValue){
        return previousValue + "[" + currentValue + "]" ;
    }
);
// above function results in a single string like 
// "categoryOptions[apartment][floors][value]" 
// which off-course can't be used as object key
// and obj[roadToValue] results in 'undefined'

有什么办法可以让我获得正确的密钥以在此处传递给obj吗?

您绝对可以为此使用reduceRight 问题是您创建了一个字符串,但是您需要将对象作为initialValue传递并使用方括号表示法:

 var obj = {"type":"Purchase","category":"Apartment","categoryOptions":{"apartment":{"floors":{"type":"number","value":null,"placeholder":"Total Floors"}}}} var keysArray = ["value", "floors", "apartment", "categoryOptions"] var value = keysArray.reduceRight((r, e) => r[e] || r, obj) console.log(value) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM