我有一个函数可以将对象文字响应数据转换为数组:
发件人:[{"_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)
这是由于data.fieldVar
而失败的。如果我对data.rating
的调用进行硬编码,它将正常工作。
如何在函数调用中传递"rating"或任何其他名称?
试用括号
function createArray(fieldVar, responseData) {
var newArray = responseData.map(function(data) {
return data[fieldVar] // access with brackets
});
return newArray
};
使用点表示法时,属性必须是有效的JavaScript标识符,即字母数字字符序列,还包括下划线("_")和美元符号("$"),而不是以数字开头。当你使用变量时,你需要使用括号表示法,否则data.fieldVar会指向可能不存在的属性"fieldVar"。这是因为您想要访问的变量不会被求值,而是被视为一个普通的"字符串"。
有关MDN的更多信息:属性访问者