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

时间:2018-07-25 12:40:50

标签: javascript arrays ecmascript-6 spread-syntax

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

data = data.map((item) => {
  item.active = false;
  return item;
})

行!但是接着是Eslint,no-param-reassign。所以我不得不寻找其他东西。经过一番谷歌搜索,我找到了传播算子!太棒了!我创造了这个杰作:

data = data.map((item) => {
  return {...item, active: false}
})

看起来很酷,并且也可以工作。但随后又有Eslint,arrow-body-style。好的,我将在同一行上返回对象:

data = data.map(item => {...item, active: false});

不起作用! :'(我想念什么吗?

1 个答案:

答案 0 :(得分:7)

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

data.map(item => ({...item, active: false}));

map仅在需要其他数组时有用。

但是这里有一个更简单的解决方案。您不必重新分配所有项目和data。你应该做

data.forEach(item => item.active=false)