我需要使用for循环在JavaScript中动态创建JSON对象。我尝试过使用array.Push
方法,但它无效。我只获得存储的第一个值。迭代的剩余值未被存储。
这就是我的尝试:
var array = [];
for (var i = 0; i < 4; i++) {
var username = drlist.reportees[i].name;
var think40 = getthink40(n,m);
if (think40.isSuccessful){
var result = think40.array;
var length = result.length;
var tes= 0;
for (var j = 0; j < length-1; j++){
tes = tes + parseFloat(result[j].duration);
}
var hours = tes/60;
var think = (hours/40)*100;
if (think > 100)
{
think =100;
}
array.push( {
name: username,
hours: think
});
}
return array;
}
答案 0 :(得分:2)
试试这个......
var jsonArray = [];
function test (){
for (var i=0; i<3;i++)
{
var jsonObject = {'a':1, 'b':2}; jsonArray.push(jsonObject);
}
return jsonArray;
}
注意:您将返回jsonObject而不是jsonArray。您应该返回jsonArray。
答案 1 :(得分:0)
在JavaScript中创建和操作JSON对象与任何其他类型的对象没有太大区别,但确实有一些限制。这些主要围绕JSON支持的数据类型,最值得注意的两个是缺少日期和函数。
JavaScript对象几乎可以包含任何内容(ES6和符号越来越多),但JSON是其中有限的子集。 JSON spec简短易读(完整的图片!),所以我建议从那里开始。正如您在规范中看到的那样,值类型包括字符串,数字,对象,数组,布尔关键字和null。不支持日期 - 通过将它们格式化为ISO 8601字符串 - 或函数来轻松解决。
要将有效的JavaScript对象转换为最终的JSON表单,需要进行有限数量的字符串格式化和转义。大多数现代浏览器都有global JSON
API这样做,同时提供解析和渲染(stringify
)方法。这是您codec以及操作JSON时的第一步也是最后一步。
在您的示例中,您将正常构建对象,并根据需要分配属性(foo.bar = 3
)。最后,要返回JSON(实际上只是JS中的一个字符串),您将获取您创建的对象并将其传递给JSON.stringify
。这将生成一个有效,安全,转义的JSON字符串,适合传递给Web服务和其他脚本。