2010-12-03 161 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

嘗試:

console.log(myArray[proyNombre]); 

myArray的實際上是在JavaScript中對象。您可以使用object.propertyNameobject['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中的對象可以像關聯數組一樣對待。

相關問題