如何使用变量名访问Javascript循环中嵌套对象内的元素?

我很无能为力.我有一个像这样的JSON字符串,我需要检查提供的“属性”(以下示例中的postsome):

var index_file =
[{
 "indexAB":[
    { "postsome": ["keyword_abc", "keyword_def"] },
    { "testsome": ["keyword_111", "keyword_222"] }
  ]
},{
 "index_random": [
    { "postsome": ["keyword_abc"] }
  ]
}]

我有任意数量的索引(“indexAB”,“index_random”),里面有n个对象.

我需要“找到”我的属性postomeome但我无法让它工作,因为我正在努力正确的访问对象的方式.

所以:

for (var i = 0, l = indices.length; i < l; i += 1) {

        doc._id = "postsome",
        index_name = "indexAB";

    indices[i]["indexAB"];             // ok, returns object on correct iteration
    indices[i][index_name];            // undefined
    indices[i].indexAB[0][doc._id]     // ok, returns undefined or keywords
    indices[i][index_name][0][doc._id] // undefined 
}

题:
如何使用变量名index_name访问循环中的嵌套对象?

解决方法:

这不是您问题的直接答案,但我相信它实际上可能对您提供一种复杂的方法来帮助您访问对象中的值.

如果不是这个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"

见:DEMO

我认为您应该更改的是您的数据模型,因为目前它与JSON的想法相差甚远,并且访问数据总是非常困难.

上一篇:python – 通过字典迭代嵌套字典


下一篇:java – 使用带有嵌套对象的Criteria的spring-data-elasticsearch