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

标签 javascript arrays javascript-objects

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

// 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 的正确 key 吗?

最佳答案

你绝对可以使用 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)

关于JavaScript - 使用键数组从嵌套对象中检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44590743/

相关文章:

javascript - React Route With Params 找不到路线的位置

java - 使用数组在 ImageView 上随机生成图像

java - 打印时遇到问题 (java)

Javascript嵌套对象过滤创建新对象

Javascript 继承和特权函数

javascript - Jquery 在滚动时触发动画一次

javascript - JQGrid 4.3.2 读取JSON数据时getAccessor函数出错

javascript - 显式结束响应时调用 express.js 下一个中间件层

javascript - 有没有更好的方法来对对象数组进行排序以动态生成按值分隔的 HTML 元素?

JavaScript:在不使用 `eval` 的情况下将平面数组转换为树状结构