Javascript 地图内的JS spread Operator不工作?

Javascript 地图内的JS spread Operator不工作?,javascript,ecmascript-6,lodash,Javascript,Ecmascript 6,Lodash,为什么不起作用(使用Lodash贴图功能): 但这确实: const data3 = [{test:"test"}]; const data4 = _.map(data3, ((item) => Object.assign({}, item, {id:1}))); 在地图之外,它也起作用: const data5 = {test:"test"}; const data6 = {...data5, id:1} 对于对象文字,您需要这样做 当您使用{时,它被解释为函数的起始括号,而不是您需

为什么不起作用(使用Lodash贴图功能):

但这确实:

const data3 = [{test:"test"}];
const data4 = _.map(data3, ((item) => Object.assign({}, item, {id:1})));
在地图之外,它也起作用:

const data5 = {test:"test"};
const data6 = {...data5, id:1}

对于对象文字,您需要这样做

当您使用
{
时,它被解释为函数的起始括号,而不是您需要使用
返回的括号

=>{…item,id:1}
这里的
{
被解释为函数的起始大括号,因此spread操作符将抛出一个错误

constdata1=[{test:“test”}];
constdata2=data1.map((item)=>{return{…item,id:1});

console.log(data2);
要返回映射中的对象,需要将其包装在
()
中。因此,当您执行
映射((项)=>{…项,id:1})时,
应该是
映射((项)=>({…项,id:1}))


当使用ES6返回“合成”对象时,您的语法是错误的。如果您使用的是箭头函数,并且需要隐式返回和对象,则需要使用
()

同样适用于
Array.map
btw。这里是ES6的示例,因为在这种情况下,lodash并没有真正发挥作用

constdata1=[{test:“test”}];
constdata2=data1.map(item=>({…item,id:1}));

console.log(data2)
在这一行
const-data2=..map(data1,((item)=>{…item,id:1}));
不在返回值周围放置
()
,会使解释器认为您正在使用那些
{}


尝试将其更改为
const data2=..map(data1,((item)=>({…item,id:1}));

如果不想编写返回语句,则需要将对象包装到括号中。如
=>({…item,id:1})
我没有投反对票,但我认为您没有使用Loadash,OP的要求是使用Loadash地图。@carkod不管您是否使用Loadash,这个答案都是适用的。我试图解释这个概念。不管怎样,一个没有任何解释的原始代码片段是非常不费力的。至少您应该指出您所做的更改。并且请务必提及你为什么做出这样的改变。@Marie你是对的,对不起。
const data5 = {test:"test"};
const data6 = {...data5, id:1}
const data1 = [{test:"test"}];
const data2 = data1.map((item) => ({...item, id:1}));
console.log(data2);