javascript - JS对象的属性覆盖问题

查看:171
本文介绍了javascript - JS对象的属性覆盖问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

推入数组时候对象变掉了

rows是用node-mysql取到的结果。

    for(var i of rows){
      var obj = {};
      var ar = [];
      if(i.name){
        obj.field_name = '1002';
        obj.field_value = '微信';
        obj.virtualAccount = i.id;
        console.log(obj);
        ar.push(obj);
        // obj = {}; 加上这行才正常
      }
      if (i.intro) {
        obj.field_name = '1001';
        obj.field_value = 'QQ';
        obj.virtualAccount = i.id;
        console.log(obj);
        ar.push(obj);
      }
      arr.push(ar);
    }
    console.log(arr);
    

这是运行结果。为什么微信没有push进去呢

解决方案

你代码里不是自己写了么,被注释掉的那行加上就好了。

这里面还是对象引用的问题,ar.push(obj);第一个if里边push了微信的进去了,但是第二个if修改了obj的属性,所以第一个push进去的obj的属性就改变了,所以最终就是都变成第二次push进去的那个了

这篇关于javascript - JS对象的属性覆盖问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆