0

postsome我有一个 Javascript 对象,如果未定义,我正在努力检查循环。

这是我的对象:

var indices = [{
    "indexAB": [{
        "postsome": [
            "keyword_abc",
            "keyword_def"
         ]
       }]
    },{
    "indexA": [{
        "postsome": [
            "keyword_abc"
        ]
      }]
    }
 ]

问题是,我无法引用indexAindexABpostsome直接引用。一切都会变数。这就是我正在尝试的:

// passed parameter
var doc._id = "postsome";

// mapping priv
// "indices": [
//    {"name":"indexA","fields":["findMeA"]},
//    {"name":"indexAB", "fields":["findMeA","findMeB"]}
//    ],

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

  var index = priv.indices[i];
      index_name = index["name"]; // indexAB or indexA

  // I can't reference indexAB directly 
  if ( indices[i].indexAB !== undefined && indices[i].indexAB.length  >  0 )          {
      console.log( indices[i].indexAB );
      console.log( indices[i].indexAB[0][doc._id] );

      if (indices[i].indexAB[0][doc._id] !== undefined) {
        console.log("gotcha");
        trigger = true;
      }
    }
}

因此,当我使用indexAB硬编码时,它可以工作,但我需要遍历这些值('indexA' 和 'indexAB' instea)。

问题:
有没有办法.indexAB[0]用变量替换?如果是这样,怎么做?

谢谢!

4

1 回答 1

0

只需使用括号表示法,与使用 . 的方式完全相同[doc._id]

if (indices[i][index_name] !== undefined && indices[i][index_name].length > 0)

括号表示法和点表示法是可以互换的,所以这两行是等价的:

indices.foo
indices["foo"]

但是,如果您需要使用变量,indices.varName则将转换为indices["varName"],因此您必须使用括号表示法以确保它使用变量值而不是变量名作为字符串。

于 2013-01-22T18:06:55.290 回答