为什么这不起作用(使用Lodash映射功能):
const data1 = [{test:"test"}];
const data2 = _.map(data1, ((item) => {...item, id:1}));
但是这样做:
const data3 = [{test:"test"}];
const data4 = _.map(data3, ((item) => Object.assign({}, item, {id:1})));
在地图外也可以使用:
const data5 = {test:"test"};
const data6 = {...data5, id:1}
答案 0 :(得分:0)
要返回地图中的对象,需要将其包装在()
中。因此,map((item) => {...item, id:1})
应该是map((item) => ({...item, id:1}))
const data1 = [{test:"test"}];
const data2 = data1.map((item) => ({...item, id:1}));
console.log(data2);
答案 1 :(得分:0)
在返回带有 ES6 的“组成”对象时,您只是使用了错误的语法。如果您使用的是箭头函数,并且需要隐式返回对象,则需要用()
将其包装起来:
与Array.map
相同。这是ES6的示例,因为lodash在这种情况下实际上并不起作用。
const data1 = [{test:"test"}];
const data2 = data1.map(item => ({...item, id:1}));
console.log(data2)
Rest使用Object.assign
为您完成对象合并并返回它,而last只是对象文字。
答案 2 :(得分:0)
在此行const data2 = _.map(data1, ((item) => {...item, id:1}));
不将()
放在返回值周围会使解释器认为您正在使用那些{}
尝试将其更改为const data2 = _.map(data1, ((item) => ({...item, id:1})));
答案 3 :(得分:-1)
对于对象文字,您需要这样做
使用{
时,它被解释为比使用return
所需的功能大括号。
{=>{...item, id:1}
,这里的{
被解释为函数的起始括号,因此传播运算符将引发错误。
const data1 = [{test:"test"}];
const data2 = data1.map((item) => {return{...item, id:1}});
console.log(data2);
PS 对于认为未使用loadash给出答案的失望选民
const data1 = [{test:"test"}];
const data2 = _.map(data1, ((item) => {return {...item, id:1}}));