在箭头函数中使用 ComputedPropertyName 创建一个对象字面量

Create an object literal with ComputedPropertyName in arrow function

如何转换:

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: Unexpected token :

您必须将对象字面量括起来以说服解析器它一个对象字面量:

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

通过将其括在括号中,解析器被迫将其解释为表达式,而不是语句块{ 字符有歧义,当它是语句中的第一件事时,解析器总是假设 "statement block" 就是它所看到的。

隐式 return一个带箭头函数的对象,用括号括起来:

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