我有第三方函数返回一个对象
abc.xyz() --> this returns an object containing many objects,strings,boolean & arrays . Basically JSON style
object.
我正在遍历此对象以仅获取此对象内的对象&该对象应该有一个名为" apple" 。找到该对象后,我将密钥放入名为" index"的变量中。 &安培;然后使用该变量" index"使用
获取我想要的对象abc.xyz()。index //这应理想地返回一个对象,但这是未定义的。为什么呢?
我的代码如下。
var pa= abc.xyz();
var index;
for(var key in pa){
if (pa.hasOwnProperty(key)) {
var obj = pa[key];
for(var prop in obj){
if(obj.hasOwnProperty(prop)){
if(typeof obj === 'object'){
if( prop == "apple"){
index = key;
}
}
}
}
}
}
el.appendChild(ul(pa.index)); // though I get the correct index when i
console.log(index) but why is pa.index undefined?
如果我不使用索引变量&我直接说pa.k,其中k是索引的值,它的工作原理。那么为什么pa.index不工作?
答案 0 :(得分:0)
pa.index
查找名为“index”的键
要查找index
值的关键字,您需要使用pa[index]
- 没有句点,只需使用括号。
答案 1 :(得分:0)
这是一个示例,说明了如何在javascript中使用两种不同的属性访问语法:
var o = {
index: 'this is index',
APPLE: 'this is APPLE'
};
var index = 'APPLE';
console.log(o.index); // --> this is index
console.log(o[index]); // --> this is APPLE *
console.log(o['index']); // --> this is index
标有*
的那个是你在这种情况下应该使用的那个。此表单会查找o
的属性,其名称与变量index
中包含的值相匹配。其他两种形式只是寻找名为"index"
的属性。所以你的例子的最后一行应该是:
el.appendChild(ul(pa[index])); // assuming that `el` and `ul()` were both
// defined appropriately elsewhere in your
// script.
此外......似乎您的逻辑可能会大大简化。请考虑以下事项:
var pa = abc.xyz();
var result;
for(var key in pa){
if (pa.hasOwnProperty(key)) {
var obj = pa[key];
if(obj.hasOwnProperty("apple")) {
result = obj;
}
}
}
el.appendChild(ul(result));