Javascript 如何根据数组访问对象中的属性

Javascript 如何根据数组访问对象中的属性,javascript,Javascript,我有一个这样的数组: var arr=[one, lol]; 还有像这样的物体 var obj={ one:{ lol:11234 } } 如果我做obj[lol],那么它将打印出11234,我该怎么做呢?请记住,我不知道数组的长度,像console.log(obj[one][lol])这样的答案不起作用。提前感谢。您需要像这样尝试: obj["one"]["lol"] jsIDLE:您可以存储上一个属性的值(最初是obj),并继续循环直到数组结束,如下所示

我有一个这样的数组:

var arr=[one, lol];
还有像这样的物体

var obj={
    one:{
        lol:11234
    }
}

如果我做obj[lol],那么它将打印出11234,我该怎么做呢?请记住,我不知道数组的长度,像console.log(obj[one][lol])这样的答案不起作用。提前感谢。

您需要像这样尝试:

obj["one"]["lol"]

jsIDLE:

您可以存储上一个属性的值(最初是
obj
),并继续循环直到数组结束,如下所示:

var-arr=['1','2','3'];
var obj={
一:{
二:{
三:11234
}
}
}
var currentProp=obj;
对于(变量i=0;iconsole.log(currentProp)因为您只是查找属性值,所以执行以下操作更简单:

console.log(obj.one.lol);
使用方括号的方式进行操作JS认为one和LOL都是变量。除非用引号括起来

console.log(obj['one']['lol');
除非您创建一个函数来重新构造obj对象或将obj.one作为属性提供给它,否则您将无法获得所需的值。

您可以使用该函数,因为它返回所需的对象,而无需在外部保留引用

函数集(对象、路径、值){
var last=path.pop();
reduce(函数(o,k){
返回o[k]=o[k]|{};
},object)[last]=值;
}
var obj={};
集合(obj,['one','lol'],'11234');

控制台日志(obj)您需要这样尝试:obj[“one”][“lol”]相关:这听起来像是xy问题。你为什么需要这个?这个问题背后的问题是什么?这是如何回答这个问题的?这是硬编码的,不是动态的!如果我执行obj[three],它将返回11234,有没有办法做到这一点?@eclipseIzHere没有。括号符号查找对象的一个属性,它不查找后代或嵌套对象。您必须手动遍历对象并对其进行搜索。