簡體   English   中英

如何檢查嵌套對象屬性在Javascript中是否未定義?

[英]how to check if a nested object property is undefined in Javascript?

我有一個Javascript對象,並且我很努力地檢查是否未定義postsome的循環。

這是我的對象:

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]替換為變量? 如果是這樣,怎么辦?

謝謝!

只需使用括號符號即可,與使用[doc._id]

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

括號符號和點符號可以互換,因此這兩行是等效的:

indices.foo
indices["foo"]

但是,如果需要使用變量, indices.varName將轉換為indices["varName"] ,因此必須使用方括號表示法確保其使用變量值而不是變量名作為字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM