zoukankan      html  css  js  c++  java
  • 如何使用for循环把对象push到数组中,且前面的值不会被覆盖

    当你想把一个对象循环遍历去给定对象赋值的时候,你想得到的结果是[{age:20},{age:21},{age:22}],但是你可能循环出来的push的结果是[{age:22},{age:22},{age:22}]该如何解决这种情况呢,原因是什么?

    当你按照以下方法进行书写的时候就会出现值被覆盖只能显示最后的值

        var arr = []
        var obj = {}
        for (var i = 0; i < 5; i++) {
            obj.age = i + 20
            arr.push(obj)
        }
        console.log(arr)   //[{ age: 24 },{ age: 24 },{ age: 24 },{ age: 24 },{ age: 24 }]

    原因:每次取出来的值都放在了obj.age中,因为是在外面定义的对象,所以obj的地址是一样的,arr中保存的是obj的地址,当最后一次给obj.age赋值的时候,由于是同一个obj,所以最后一次给obj.age赋值的后会把之前的值覆盖掉。

    解决方式很简单,就是把对象定义到循环里面。

        var arr = []
        for (var i = 0; i < 5; i++) {
            var obj = {}  //在里面定义对象
            obj.age = i + 20
            arr.push(obj)
        }
        console.log(arr)   //[{ age: 20 },{ age: 21 },{ age: 22 },{ age: 23 },{ age: 24 }]
  • 相关阅读:
    Java8常用新特性实践
    Presto集群部署
    Exception: Unexpected End Of File(crontab)
    centos6环境下使用yum安装Ambari
    pyspark进行词频统计并返回topN
    七行代码开始flask
    hibernate初步4
    java四大域总结
    servlet中的转发和重定向问题
    一个web页面的访问的过程
  • 原文地址:https://www.cnblogs.com/shy0113/p/11911336.html
Copyright © 2011-2022 走看看