js循环添加对象或数组;循环创建对象并添加进数组;js循环push对象值到数组内;给数组循环添加实时创建的变量

需求:

循环创建符合要求的对象后,将其保存进数组内

 

代码:

js循环添加对象或数组;循环创建对象并添加进数组;js循环push对象值到数组内;给数组循环添加实时创建的变量

 

 

 

randomImgYield(num1, num2) {
            let NumImgRandom = []
            for (let i1 = 0; i1 < num1; i1++) {
                /**
                 * 循环往数组里添加数组或对象时,需要在循环里创建需要添加的数据变量,保证在局部作用域内有效
                 * 若在循环外let创建,那对象的内存指针都会指向为最后一个的内存指针
                 * 则添加的一直为最后的那个对象
                 */
                let ImgArray = []
                for (let i2 = 0; i2 < num2; i2++) {
                    let img = {}
                    img.a = this.imgSonDate_set()
                    img.b = this.imgSonSerial_set()
                    img.c = this.imgSonLotNumber_set()
                    ImgArray.push(img)
                }
                NumImgRandom.push(ImgArray)
                // this.letter必须再一张图-6个内容块生成完后清空,否则imgSonSerial_set()会陷入死循环
                this.letter = []
            }
        },

 

重点:

用于保存的数组需要在循环外创建,而生成的对象需要每次在循环内创建;而不能是在循环外创建好后在循环内进行赋值

因为若在循环外let创建,那对象的内存指针都会指向为最后一个的内存指针,则添加的一直为最后的那个对象

 

列如:(错误示范)

 

let ImgArray = []
let img = {} for (let i2 = 0; i2 < 3; i2++) {   img.id = i   ImgArray.push(img) }

 

 最后 ImgArray 结果实际为:[ { id:2 },{ id:2 },{ id:2 } ]

 

上一篇:Integer 缓存源代码


下一篇:在VectorCAST for Linux中使用分类树功能生成测试用例