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;i console.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没有。括号符号查找对象的一个属性,它不查找后代或嵌套对象。您必须手动遍历对象并对其进行搜索。