我正在创建一个没有循环的数组对象,如下所示:
var data = [];
var obj = {};
obj["key1"] = 'val 1';
obj["key2"] = 'val 2';
data.push(obj);
上面的代码生成了Array[Object]
,但是当我尝试在下面的循环中创建它时:
var data = [];
for (var i = 0; i < len; i++) {
var obj = {};
obj["key1"] = 'val 1';
obj["key2"] = 'val 2';
data.push(obj);
}
它产生了我Array[]
,在第二个数组中有一个额外的索引。那么我怎样才能得到如下数组:
Array[Object,Object,Object]
答案 0 :(得分:1)
如果您需要: - Array[Object,Object,Object]
,那么您的代码工作正常
参见示例: -
var data = [];
var len = 3;
for (var i = 0; i < len; i++) {
var obj = {}; // put outside
obj["key1"] = 'val 1';
obj["key2"] = 'val 2';
data.push(obj);
}
console.log(data);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
注意: - 我认为问题出现在 len
变量中,因为哪个循环再执行一次,你得到一个额外的索引?
检查并尝试类似len = len-1;
的内容,然后在循环中使用
答案 1 :(得分:1)
你的代码工作正常,因为var len是3
var data = [];
for (var i = 0; i < 3; i++) {
var obj = {};
obj["key1"] = 'val 1';
obj["key2"] = 'val 2';
data.push(obj);
}
返回一个包含3个对象的数组。每个对象都有2个值。
[对象,对象,对象]