如何在循环中创建数组对象而无需额外的密钥?

时间:2017-05-11 05:52:28

标签: javascript jquery for-loop

我正在创建一个没有循环的数组对象,如下所示:

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]

2 个答案:

答案 0 :(得分:1)

如果您需要: - Array[Object,Object,Object],那么您的代码工作正常

参见示例: -

&#13;
&#13;
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;
&#13;
&#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个值。

[对象,对象,对象]