如何从 javascript 中的一个线性箭头函数 return 匿名对象?

How to return anonymous object from one liner arrow function in javascript?

我最近切换到 es6 并开始在我的代码中使用箭头函数。 重构时我遇到了下面的代码

data.map(function(d) {
   return {id: d.id, selected: bool};
});

我把上面的代码改成了这个-

data.map((d) => {id: d.id, selected: bool});

但是我从上面的代码中得到了错误。我不知道这里出了什么问题? 我知道如果没有代码块,那么箭头函数提供了隐式 return。

但不知道如何 return 空对象或具有某些属性初始化的匿名对象?

编辑:

这样做有什么问题吗?只是出于好奇。

data.map((d) => new {id: d.id, selected: bool});

在对象初始值设定项周围放置括号:

data.map((d) => ({id: d.id, selected: bool}) );

圆括号对其内部表达式的值没有影响,但它们 do 具有消除所包含表达式的第一个标记的歧义的句法效果。如果没有括号,JavaScript 解析器必须决定 { 标记是表示 "Here starts a function body" 还是 "Here starts an object initializer." 它 总是 选择前者(即一段代码)。

因此,引入括号消除了混淆:前导 ( 唯一可以表示的是 "here comes an expression",因此 { 里面 括号只能是 "here comes an object initializer." (换句话说,你不能在表达式中间放置代码块;如果你尝试,那么你会得到语法错误。)

您好,我认为您需要将括号添加到 return 对象文字

// 将正文括起来 return 一个对象文字表达式: 参数 => ({foo: bar})

来自 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions

您也可以使用

data.map((d) => {
    return {id: d.id, selected: bool}
} );