2013-11-23 44 views
0

如果我有一個數組並且有一個對象可以使用數組值作爲字段名來獲取對象字段值?使用數組值作爲對象字段名稱

像這樣:

var x = ['foo', 'bar'], 
    y = { 
     foo: 'foo,foo', 
     bar: 'bar,bar' 
    } 

for (var i = 0, l = x.length; i < l; i++) { 
    console.log(y.x[i]); 
    // Uncaught TypeError: Cannot read property '0' of undefined 
} 

除此之外,這是行不通的。

Demo

更新

如果對象的領域之一是什麼方法,如:

y = { 
    foo: 'foo,foo', 
    bar: function() { 
     alert(''); 
    } 
} 

回答

4

你需要爲你正在處理一個可變密鑰

使用 bracket notation
console.log(y[x[i]]); 

演示:Fiddle

y.x[i]試圖讀取屬性的y這不退出,因此[0]引發錯誤x

+0

你將如何處理函數 –

+0

@MinaGabriel函數?你的意思是'y [x [i]]'是一個函數嗎? –

+0

是的,如果其中一個是函數,我注意到它會產生函數作爲字符串 –

相關問題