使用箭头函数中的ComputedPropertyName创建对象文字

时间:2018-01-15 13:59:49

标签: javascript ecmascript-6 arrow-functions computed-properties

如何转换:

const array = [10, 0, 90, 80, 50, 0, 60];
let id = 1;

const studentScores = array.map(function(score, index){
  return { [index]: score, student_id: id } 
});

console.log(studentScores)

进入胖箭头语法:

const studentScores = array.map((score, index) => { [index]: score, student_id: id } );

我的尝试抛出错误:

  

SyntaxError:意外的令牌:

2 个答案:

答案 0 :(得分:4)

您必须将对象文字加上括号以说服解析器 是对象文字:

const studentScores = array.map((score, index) => ({ [index]: score, student_id: id }) );

通过将其包装在括号中,解析器被强制将其解释为表达式而不是语句块{字符具有这种歧义,当它是语句中的第一个东西时,解析器总是假设"语句块"是他们所看到的。

答案 1 :(得分:2)

隐式返回带箭头功能的对象,请用括号括起来:

const studentScores = array.map((score, index) => ({ [index]: score, student_id: id }) );