如何使用变量名访问Javascript循环中嵌套对象内的元素?
我不懂。我有一个类似这样的JSON字符串,我需要检查提供的“属性”(如何使用变量名访问Javascript循环中嵌套对象内的元素?,javascript,jquery,arrays,object,nested,Javascript,Jquery,Arrays,Object,Nested,我不懂。我有一个类似这样的JSON字符串,我需要检查提供的“属性”(postsome,在下面的示例中): 可以有任意数量的索引(“indexAB”、“index_random”),其中包含n对象 我需要“查找”我的属性postsome,但我无法让它工作,因为我正在努力寻找访问对象的正确方法 因此: for(变量i=0,l=index.length;i
postsome
,在下面的示例中):
可以有任意数量的索引(“indexAB”、“index_random”),其中包含n
对象
我需要“查找”我的属性postsome
,但我无法让它工作,因为我正在努力寻找访问对象的正确方法
因此:
for(变量i=0,l=index.length;i
问题:如何使用变量名
index\u name
访问循环中的嵌套对象 index\u name
是未定义的
,因为前面的行会引发错误
doc.\u id=“postname”//这会导致错误
只需使用一个简单的字符串
doc = "postname"
这并不是对你的问题的直接回答,但我相信它实际上可能比给你一个复杂的方法来访问对象中的值更有帮助 如果不是此JSON对象,而是:
var index_file =
[{
"indexAB":[
{ "postsome": ["keyword_abc", "keyword_def"] },
{ "testsome": ["keyword_111", "keyword_222"] }
]
},{
"index_random": [
{ "postsome": ["keyword_abc"] }
]
}];
您将拥有更简单的数据结构:
var index_file =
{
"indexAB": {
"postsome": ["keyword_abc", "keyword_def"],
"testsome": ["keyword_111", "keyword_222"]
},
"index_random": {
"postsome": ["keyword_abc"]
}
};
这样,只需使用以下工具,就更容易访问:
var value = index_file.indexAB.postsome[0]; // no loops, no nothing
// value == "keyword_abc"
见:
我认为您应该改变的是您的数据模型,因为目前它与JSON的概念相去甚远,访问其中的数据总是非常困难。有几个问题
- “indexAB”仅存在于数组中的第一个元素上
- 变量名内不能有点
var index=index\u文件;
对于(变量i=0,l=index.length;i
您的代码无效。不能编写var foo.bar=代码>。去掉var
,看看这是否有帮助。索引[i][“indexAB”]
和索引[i][index\u name]
应该总是产生相同的结果,因为索引\u name
的值实际上是“indexAB”
。如果您的代码中确实有Blender指出的错误,那么您不应该是这些行中的任何一行。请原谅。跳过var
,参数doc.\u id
被传递到函数中。
var index_file =
{
"indexAB": {
"postsome": ["keyword_abc", "keyword_def"],
"testsome": ["keyword_111", "keyword_222"]
},
"index_random": {
"postsome": ["keyword_abc"]
}
};
var value = index_file.indexAB.postsome[0]; // no loops, no nothing
// value == "keyword_abc"
var indices = index_file;
for (var i = 0, l = indices.length; i < l; i++) {
var doc_id = "postsome";
var index_name = "indexAB";
indices[i]["indexAB"]; // ok, returns object on correct iteration
indices[i][index_name]; // undefined
if ("indexAB" in indices[i]) {
indices[i].indexAB[0][doc_id] // ok, returns undefined or keywords
indices[i][index_name][0][doc_id] // undefined
}
}