萌新求教!关于js的map奇怪问题

代码1
letarr=[{"a":1},{"b":2}];
arr.map((item,index)=>{item.key=index;});
console.log(arr);//[{a:1,key:0},{b:2,key:1}]
代码2
letarr1=[{"a":1},{"b":2}].map((item,index)=>{item.key=index;});
console.log(arr1);//[undefined,undefined]
请问下为啥两个结果会不一样?
慕少森
浏览 544回答 2
2回答

慕盖茨4494581

问题很明显letarr1=[{"a":1},{"b":2}].map((item,index)=>{item.key=index;})这个代码返回的就是[undefined,undefined]这个没错为什么?[{"a":1},{"b":2}].map((item,index)=>{item.key=index;})和arr.map((item,index)=>{item.key=index;})明显不是一个东西。首先要理解什么是Array.prototype.map()这个叫映射,映射既是:对每一个元素作用相同的操作,并返回指定得结果。你前面的操作是对arr的每一个元素添加一个key,让key=index,并且没有返回你后面的操作是对[{"a":1},{"b":2}]的每一个元素添加一个key,让key=index,并且没有返回其实你这2个操作返回的都是[undefined,undefined]如果你要让你的第二个代码得到正确的结果,改成这样letarr1=[{"a":1},{"b":2}].map((item,index)=>{item.key=index;returnitem;});console.log(arr1);结果就如你所料了。

慕雪6442864

map返回一个新数组,你应该打印这个arr.map((item,index)=>{item.key=index;});的值,而不是arr你map回调里没写return就是undefined
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript