js怎么循环出变量,然后一个个储存到数组中?

如题所述

举个简单例子,希望你能明白,

 

1、下面输出结果是"jim",而不是"tom",

是因为数组中保存的都是指向json对象a的地址,

dd[0],dd[1],dd[2],dd[3]对象指向的内存地址相同,

当修改其中一个dd[0]的属性值的时候,数组所有元素指向的对象属性值都改变了。

var dd = [];

var a = { "cname": "tom" };

for (var i = 0; i <4; i++) {

    dd[i] =a;

}
dd[0].cname = "jim";
alert(dd[2].cname);

2、下面输出结果是0,而不是1,

是因为数组元素dd[0],dd[1],dd[2],dd[3]对应的内存地址都不同,互不干扰。

var dd = [];

var a = 0;

for (var i = 0; i <4; i++) {

    dd[i] =a;

}

dd[0]=1;

alert(dd[2]);

希望对你有帮助!

追问

这个我明白,我直接说我要实现的功能吧,我需要用一个数组来储存子弹,子弹数量是N个,子弹还有速度,方向的这些属性,这样该怎么实现。

追答

就用json对象数组保存:

var bullets = [{ "Speed": "200", "Direction": "向右" }, "Speed": "220", "Direction": "向后" }];
bullets[2] = {"Speed": "200", "Direction": "向后" };

 现在bullets数组有三个子弹对象了。

追问

  json数组是这样的吗?

  var dd={
   ss:'sdf',
   vv:'sdfsd'
  }
那怎么循环出N个这样的

追答var bullets = [];
for (var i = 0; i < 10; i++) {
    var bullet = { "Speed": "200", "Direction": "向右" };
    bullets[i] = bullet;
}

如上,循环给json数组赋值就行了。

 

请参考并采纳,谢谢!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-20
var students=[
            {name:"陈强",age:12},
            {name:"张强",age:15},
            {name:"张剑",age:13},
            {name:"杨兴豪",age:44}
        ]
        var arr=[];
        for(var i=0;i<students.length;i++){
            
           arr.push(students[i]['age']);
        }
        
        console.log(arr);
        document.write(arr.sort());

第2个回答  2017-09-28
定义数组,在循环中使用put方法就可以了。
第3个回答  2013-10-04
说清楚
第4个回答  2013-10-04
能不能具体一点儿追问

for (var i = 0; i < bullnumber; i++) {
Tank.bullet[i] = eval('var bull'+i+';');
}
类似这样的,但是这样好像不行 就是我不想一个个去定义变量,想用循环一个个循环出来,然后一个个给数组。

追答

看不太明白你说的,不管怎么样,变量都要进行初始化才能赋值给其它变量。如果你这一组数据有规律的话就可以不一一初始化变量了,比如:

var a=1;
var b=new Array(10); 
for(var i=0;i<b.length;i++)
{
b[i]=a+i;  
}

追问

这样好像存进去的是数字啊, 我想存进去一个变量或者一个可以定义属性的
像这样:var dd; dd. ? 这个?可以是自己定义的
我举个例子:
var dd=[];
var sl=2;
for(var i=0; i<sl;i++){
//这里面我本来是这样的
dd[i]=Object;
//但是这样的话我不管修改数组里哪一个,全部都会改变,所以我就想用变量,不知道我这样说你能不能理解
}

追答

还是不懂,可能是我孤陋寡闻了吧