JavaScript: получение значения свойства объекта

0

Я блуждаю, если это возможно ниже:

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
         }
    }     
}

Как я могу получить доступ к свойству name для group3. Он не отображается в предупреждении. И я также хочу сравнить значение с параметром "t".

  • 0
    for (var name in layers) только перебирает свойства layers . Ваше свойство name является свойством объекта group3 , а не свойством layers .
Теги:

2 ответа

1
Лучший ответ

Если вы хотите получить свойство name через итерацию, вы должны проверить, является ли имя свойства для итерации group3. Как только вы убедитесь, что у вас есть свойство group3 вы можете получить доступ к свойству name. Цикл for...in будет перебирать все свойства объекта, при использовании in layers он выполняет итерацию по всем свойствам layers, так как group3 является свойством на layers вы не можете получить доступ к свойству group3.name, просто перебирая свойства в layers.

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

Это можно сделать намного проще без итерации:

alert(layers.group3.name);
  • 0
    Спасибо за ваш ответ, хорошо, я нахожу свойство name для group3, но затем, когда оно соответствует параметру "t", я хочу полностью удалить этот объект - "group3" - могу ли я достичь этого ??
  • 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 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню