为了账号安全,请及时绑定邮箱和手机立即绑定

通过for循环创建对象型数组,为什么数组每一项都是一样的,都是最后一个值

通过for循环创建对象型数组,为什么数组每一项都是一样的,都是最后一个值

慕勒3428872 2018-10-16 16:15:47
简单的例子:for循环遍历2个数组,分别添加给对象的2个属性,然后将对象添加到新数组,为什么最后新数组每一项都一样??var arr=[]var k={}k.num=0k.name=''a=[1,2,3,4]b=['tom','sun','bob','kiki']for(i=0;i<4;i++){    k.num=a[i];    k.name=b[i];    arr.push(k)}console.log(arr)结果:[{name:'kiki,num:4},{name:'kiki,num:4},{name:'kiki,num:4},{name:'kiki,num:4}]
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

k是一个对象,而且在内存中只有一个,循环中每次对k的属性赋值都在相同的内存空间里进行,所以push到arr中的4个对象都是相同的k对象,且因为最后给k属性赋值为

{    name: 'kiki',
    num: 4}

所以打印出这个效果。

可以这么改

for(i = 0; i < 4; i++){
    arr.push({
        num : a[i],
        name: b[i]
    })
}


查看完整回答
2 反对 回复 2018-11-17
  • 1 回答
  • 0 关注
  • 1831 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信