2010-12-03 4 views
0

Я пытаюсь получить значение из ключа, хранящегося в строковой переменной proyNombre, но всякий раз, когда я вызываю его через общий метод «myAssociativeArray.MyKey», он получает переменную «proyNombre» в качестве ключа, вместо того, чтобы получать ее значение и передать его в качестве ключа.Как получить значение «динамически» из ассоциативного массива в javascript?

proyectos.each(function(index){ 
    var proyNombre = this.value; 

    if(!(proyNombre in myArray)){ // whenever the variable is undefined, define it 
     myArray[proyNombre] = horas[index].value-0 + minutos[index].value/60; 
    } 
    else{ 
     console.log(myArray.proyNombre); //This doesnt work, it tries to give me the value for the key 'proyNombre' instead of looking for the proyNombre variable 
     console.log(myArray.this.value); //doesnt work either 
    } 

}); 
+0

Обратите внимание, что JavaScript не имеет ассоциативных массивов - просто объектов. – alex 2010-12-03 01:58:24

ответ

2

Try:

console.log(myArray[proyNombre]); 

туАггау на самом деле является объектом в JavaScript. Вы можете получить доступ к свойствам объекта с помощью object.propertyName или, object['propertyName']. Если ваша переменная proyNombre содержит имя свойства (которое она делает), вы можете использовать вторую форму, как я сделал выше. object.proyNombre недействителен - proyNombre является переменной. Вы не можете сделать, например:

var myObject = {}; 
myObject.test = 'test string'; 

var s = 'test'; 
console.log(myObject.s); // wrong!! 

но вы могли бы сделать:

console.log(myObject.test); 
console.log(myObject['test']); 
console.log(myObject[s]); 
+0

всякий раз, когда 8 минут для лучшего таймера ответа позволяют мне – 2010-12-03 02:01:27

1

Просто доступ к значению с myArray[proyNombre].

+0

благодарю вас обоих, я дал лучший ответ на кулак, отвечающий, оба ваши решения работают. большое спасибо. – 2010-12-03 02:00:48

1

Вы должны использовать тот же синтаксис, который используется для установки значения:

console.log(myArray[proyNombre]); 
+0

похоже, что вы скопировали свой анв от sje397 – 2010-12-03 02:09:32

1

Вы делаете это правильно в назначении: MyArray [proyNombre]. Вы можете использовать тот же метод для извлечения переменной.

Если вы меняете:

console.log(myArray.proyNombre); 
console.log(myArray.this.value); 

в

console.log(myArray[proyNombre]); 
console.log(myArray[this.value]); 

Вы должны получить такое же значение (значение для ключа, представленного переменной proyNombre) регистрируется дважды.

Это правда, что Javascript не имеет ассоциативных массивов, но объекты в Javascript можно рассматривать как ассоциативные массивы при доступе к своим членам.

Смежные вопросы