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 }]
  • 相关阅读:
    JS---自己制作的选项卡
    CSS---左右固定,中间自适应布局
    Jquery Ajax示例---load,get,post方法
    JS---高级进阶
    JS---基础知识
    雅虎军规
    JS---setTimeout()与setInterval()的使用
    CSS3---绘制六边形
    CSS---CSS sprites的使用
    ARC(Automatic Reference Counting )技术概述
  • 原文地址:https://www.cnblogs.com/shy0113/p/11911336.html
Copyright © 2011-2022 走看看