Javascript将对象推送到数组中
哪一个是最终值,它不应该只有一个对象吗? 最终的结果是我所期望的,但我只是不明白为什么在第一次推送之后,数组有10个元素。Javascript将对象推送到数组中,javascript,Javascript,哪一个是最终值,它不应该只有一个对象吗? 最终的结果是我所期望的,但我只是不明白为什么在第一次推送之后,数组有10个元素。 有人能解释一下发生了什么事吗 您正在记录数组对象,而不是对象的任何方面。输出是正确的,数组也是正确的。你只需要更具体一点。如果在console.log行所在的代码中设置断点,您将看到数组已正确填充 而且,如果您不想在构建对象时看到对象的状态,只需将日志移到循环之外。执行cb[test]=“value”(或者cb[myObject]=“value”?我不确定您想要什么)将返回
有人能解释一下发生了什么事吗 您正在记录数组对象,而不是对象的任何方面。输出是正确的,数组也是正确的。你只需要更具体一点。如果在console.log行所在的代码中设置断点,您将看到数组已正确填充 而且,如果您不想在构建对象时看到对象的状态,只需将日志移到循环之外。执行
cb[test]=“value”
(或者cb[myObject]=“value”
?我不确定您想要什么)将返回您期望的结果:一个数组,其唯一的键测试(或myObject)包含定义的值
如果改用push,则该数组不是用作关联数组(key=value),而是用作索引数组(index=value),push的约定是使用下一个可用索引添加到数组末尾。因此,现在
cb[0]
是{test:“value”}
,其他cb[1]
到cb[9]
也是。尝试:
[{test: value}, {test: value}, ... , {test: value}]
var cb=[];
对于(变量i=0;i<10;i++){
推({
“测试”:“值”
});
log(JSON.stringify(cb));
};
console.log
显示了cb
现在的状态,而不是在它被记录时的状态。可能的重复:尝试执行console.log(JSON.stringify(cb))
,您将看到@Siguza在说什么。甚至console.log(cb.length)
都会显示长度正确增加。在记录数组/对象时,日志不会显示其确切状态。
[{test: value}, {test: value}, ... , {test: value}]
var cb = [];
for (var i = 0; i < 10; i++) {
cb.push({
'test': 'value'
});
console.log(JSON.stringify(cb));
};