如题所述
举个简单例子,希望你能明白,
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个这样的
for (var i = 0; i < 10; i++) {
var bullet = { "Speed": "200", "Direction": "向右" };
bullets[i] = bullet;
}
如上,循环给json数组赋值就行了。
请参考并采纳,谢谢!
{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());
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;
//但是这样的话我不管修改数组里哪一个,全部都会改变,所以我就想用变量,不知道我这样说你能不能理解
}
还是不懂,可能是我孤陋寡闻了吧