2014-01-23 52 views
0

我遊蕩,如果這是可能如下:JavaScript的:獲取一個對象的屬性值

var layers = {}; 
layers.group3 = new L.MarkerClusterGroup(); //some group of objects 
layers.group3.name = "somestr"; //here i want to give a property name to group3 object. 


function checkLayers(data, t) { 

    for (var name in layers) { 
     var value = layers[name]; 
     alert("name: "+name+ " value: "+value); 

     if(layers.group3.name == t){ 
      //do something 
     } 
    }  
} 

我如何可以訪問名稱屬性組3。它不會顯示在警報中。我也想比較參數「t」的值。

+0

'的(在層變數名稱)'只遍歷layers'的'屬性。您的'name'屬性是'group3'對象的屬性,而不是'layers'的屬性。 – nnnnnn

回答

1

如果要通過迭代獲取name屬性,則必須檢查迭代的屬性名稱是否爲group3。一旦你確定你有group3屬性,你可以訪問name屬性。當使用in layers它遍歷所有layers屬性時,for...in循環將迭代對象的每個屬性,因爲group3layers上的屬性,因此只需遍歷layers中的屬性即可訪問group3.name屬性。

for (var name in layers) { 
    if(name == "group3" && layers[name].name = t){ 
     delete layers[name]; 
    } 
} 

這是可以做到更簡單迭代而不利用:

alert(layers.group3.name); 
+0

感謝您的回覆,好的我找到了group3的名稱屬性,但是一旦它匹配參數「t」,我想完全刪除該對象 - 「group3」 - 我可以實現這個嗎? – user2906420

+0

@ user2906420查看更新。 –

0

我修改你的代碼。 它工作正常:

var layers = {}; 
layers.group3 = {}; 
layers.group3.name = "somestr"; //here i want to give a property name to group3 object. 


function checkLayers(data, t) { 

    for (var name in layers) { 
     var value = layers[name]; 
     console.log("name: ", name , " value: " , value); 

     if(layers.group3.name == t){ 
      console.log(layers.group3.name); 
     } 
    }  
} 
checkLayers('', 'somestr'); 

結果控制檯:

name: group3 value: Object {name: "somestr"} 
somestr 
相關問題