zoukankan      html  css  js  c++  java
  • 往数组中push对象, 会覆盖之前push的值

    错误代码: 

    var obj = { a: 123, b: 234, c: 345};

    var array = [ ];

    var resultObj = { };

    for(var i = 0; i < obj.length; i++) {

      resultObj.name = obj[i];

      array.push(resultObj);

    }

    得到的结果: 345, 345, 345; 而不是123, 234, 345;

    改造: 

    var obj = { a: 123, b: 234, c: 345};

    var array = [ ];

    for(var i = 0; i < obj.length; i++) {

      var resultObj = { };

      resultObj.name = obj[i];

      array.push(resultObj);

    };

    把resultObj定义在for循环中, 得到的结果就是123,234,345;

    原因: 把对象定义在外面, 始终指向一个地址, 每次赋值都赋值给了同一个地址, 所以最后赋值的会覆盖之前的值;

    把对象定义在循环中, 每次循环rusultObj都会指向不同的地址, 每次都是一个新对象

  • 相关阅读:
    nginx原理及常用配置
    课程作业03-1
    Java动手动脑02
    Java课程作业02
    java课堂测试2
    Java验证码程序
    课程作业02-2
    课程作业02-1
    课程作业01
    《大道至简》第一章伪代码
  • 原文地址:https://www.cnblogs.com/Shysun/p/10465754.html
Copyright © 2011-2022 走看看