0

私はJavascriptオブジェクトを持っていて、postsomeが未定義の場合、ループをチェックインするのに苦労している可能性があります。

これが私のオブジェクトです:

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

問題は、私が参照できないindexAindexABまたはpostsome直接参照できないことです。すべて変数になります。これは私が試していることです:

// 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)

括弧表記とドット表記は交換可能であるため、これら2つの線は同等です。

indices.foo
indices["foo"]

ただし、変数を使用する必要がある場合indices.varNameはに変換されるindices["varName"]ため、文字列として変数名ではなく変数値を使用するように、角かっこ表記を使用する必要があります。

于 2013-01-22T18:06:55.290 に答える