代码1
let arr =[{"a":1},{"b":2}];
arr.map((item,index)=>{item.key = index;});
console.log(arr); // [{a: 1, key: 0}, {b: 2, key: 1}]
代码2
let arr1 =[{"a":1},{"b":2}].map((item,index)=>{item.key = index;});
console.log(arr1); // [undefined, undefined]
请问下为啥两个结果会不一样?
问题很明显
let arr1 =[{"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]
如果你要让你的第二个代码得到正确的结果,改成这样结果就如你所料了。