使用函数变量检索对象文字值



我有一个函数可以将对象文字响应数据转换为数组:

发件人:[{"_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的更多信息:属性访问者

最新更新