2017-02-12 39 views
0

我有對象文本響應數據轉換成數組的函數:使用函數變量檢索對象文字值

來自:[{"_id":"1","rating":7},{"_id":"2","rating":3}]

到:[7,3]

function createArray(fieldVar, responseData) { 
    var newArray = responseData.map(function(data) { 
     return data.fieldVar // fails here because I am trying to use the fieldVar variable 
    }); 
    return newArray 
}; 

我所說的功能如下:

createArray('rating',response.rating_x) 

This fai ls,因爲data.fieldVar如果我將該呼叫硬編碼爲data.rating,它可以正常工作。

如何在函數調用中傳遞'rating'或任何其他名稱?

+0

這是不一樣的標記爲重複的問題..我試圖讓object.property符號在函數中的另一個函數內 – HoosierCoder

回答

0

用括號嘗試

function createArray(fieldVar, responseData) { 
    var newArray = responseData.map(function(data) { 
     return data[fieldVar] // access with brackets 
    }); 
    return newArray 
}; 

當使用點符號,屬性必須是一個有效的JavaScript標識符,即字母數字字符的序列,也包括下劃線(「_」)和美元符號(「$」),而不是以數字開頭。當你使用變量時,你需要使用括號表示法,否則data.fieldVar會指向屬性'fieldVar',它可能不存在。這是因爲您打算訪問的變量未被評估,而是被視爲正常的「字符串」。

上MDN更多信息:Property accessors