var cb = [];
for (var i = 0; i < 10; i++) {
cb.push({
'test': 'value'
});
console.log(cb);
};
我期待得到:[{test: value}, {test: value}, ... , {test: value}]
我最终得到的是每个日志声明的最终结果:
[对象]
[对象,对象]
[对象,对象,对象]
[对象,对象,对象,对象]
[对象,对象,对象,对象,对象]
[对象,对象,对象,对象,对象]
[对象,对象,对象,对象,对象,对象]
..........
当我展开任何这些数组时,它们都具有相同的结果。 例如,第一个数组包含:
[{test: value}, {test: value}, ... , {test: value}]
这是最终值,不应该只有1个对象吗? 最终的结果是我所期待的,但我只是为什么在第一次推送后数组有10个元素。 有人可以解释一下发生了什么吗?
答案 0 :(得分:1)
您需要序列化您的输出。尝试:
var cb = [];
for (var i = 0; i < 10; i++) {
cb.push({
'test': 'value'
});
console.log(JSON.stringify(cb));
};
答案 1 :(得分:0)
您正在记录数组对象,而不是对象的任何方面。输出是正确的,阵列也是如此。你需要更加具体。如果在console.log行的代码中设置断点,则会看到阵列正在正确填充。
而且,如果您不想在构建对象时查看对象的状态,只需将日志移到循环之外。
答案 2 :(得分:0)
执行cb[test]="value"
(或者cb[myObject]="value"
?我不确定你想要什么)会返回你所期望的:一个数组,其唯一的键测试(或myObject)包含定义的值
当使用push时,你不使用数组作为关联数组(key = value)而是作为索引数组(index = value),push的合同是添加到数组的末尾,使用下一个可用的索引
现在cb[0]
为{test: "value"}
,其他cb[1]
到cb[9]
也是如此。