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

时间:2017-02-12 19:44:38

标签: javascript angularjs

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

来自:[{"_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,它就能正常工作。

如何传递评分'或函数调用上的任何其他名称?

1 个答案:

答案 0 :(得分: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