如何在一行中的地图箭头函数中返回展开运算符

Jus*_*Lek 4 javascript arrays ecmascript-6 spread-syntax

我需要做的是映射数组并在所有对象上将值设置为false.这是我的第一枪:

data = data.map((item) => {
  item.active = false;
  return item;
})
Run Code Online (Sandbox Code Playgroud)

作品!但后来有Eslint,没有param-reassign.所以我必须找到别的东西.经过一些谷歌搜索后,我找到了传播操作员!真棒!我创造了这个杰作:

data = data.map((item) => {
  return {...item, active: false}
})
Run Code Online (Sandbox Code Playgroud)

看起来很酷,也很好用.但是再次有Eslint,箭身式.好的我会在同一行返回对象:

data = data.map(item => {...item, active: false});
Run Code Online (Sandbox Code Playgroud)

不行!:'(我错过了什么?

Den*_*ret 8

从箭头函数构造(lambda)返回文字对象时,必须将其包装在括号中,以便将其视为表达式:

data.map(item => ({...item, active: false}));
Run Code Online (Sandbox Code Playgroud)

map 仅在您需要不同的数组时才有用.

但这里有一个更简单的解决方案.您无需重新分配所有项目data.你应该这样做

data.forEach(item => item.active=false)
Run Code Online (Sandbox Code Playgroud)