我有这个带有多个对象的JSON,这个JSON字符串可能带有比3更多的数据/对象。所以,无论信息是什么,我都需要创建一个对象数组。
[ {"endDate":"2017-04-18","nrC":2,"type":"CO","dataD":"2017-04-19","startDate":"2017-04-16"},
{"endDate":"2017-04-27","nrC":4,"type":"CP","dataD":"2017-04-23","startDate":"2017-03-26"},
{"endDate":"2017-04-27","nrC":7,"type":"CA","dataD":"2017-04-23","startDate":"2017-04-26"}
]
var USER_DAYS = {};
for(var i=0;i<json.length;i++){
var USER_DAYS = [
{
id: json[i].nrC,
date: json[i].dataD,
title: json[i].type,
start: new Date(json[i].startDate),
end: new Date(json[i].endDate),
allDay: true
},
];
console.log(i); // prints 1,2,3
}
console.log(USER_DAYS) //prints the last object from that json.
因为JavaScript变量必须是带有 n 对象的数组,当我尝试打印它时,它应该打印3个对象而不是1个对象。现在我的控制台只显示一个,最后一个。
我需要USER_DAYS
变量来包含该JSON中的所有对象。
答案 0 :(得分:1)
每次循环时,都会创建一个新阵列并丢弃之前的任何内容。
在循环外创建 数组。
每次绕过它时都会将一个新对象推入其中。
// ALL CAPS is a convention used for constants. You don't have a constant. Don't use ALL CAPS
var user_days = []; // Create your array here
for (var i = 0; i < json.length; i++) {
// _day_ singular. You're creating a single object here!
// There's no `[]` here. That's outside the loop
var user_day = {
id: json[i].nrC,
date: json[i].dataD,
title: json[i].type,
start: new Date(json[i].startDate),
end: new Date(json[i].endDate),
allDay: true
};
// Now put that object on the array you have already
user_days.push(user_day);
}
console.log(user_days);
答案 1 :(得分:1)
您需要确保不是每次迭代都覆盖变量 e.g。
for
确保将数组定义为var json = [{
"endDate": "2017-04-18",
"nrC": 2,
"type": "CO",
"dataD": "2017-04-19",
"startDate": "2017-04-16"
},
{
"endDate": "2017-04-27",
"nrC": 4,
"type": "CP",
"dataD": "2017-04-23",
"startDate": "2017-03-26"
},
{
"endDate": "2017-04-27",
"nrC": 7,
"type": "CA",
"dataD": "2017-04-23",
"startDate": "2017-04-26"
}
];
var USER_DAYS = [];
for (var i = 0; i < json.length; i++) {
USER_DAYS[i] = {
id: json[i].nrC,
date: json[i].dataD,
title: json[i].type,
start: new Date(json[i].startDate),
end: new Date(json[i].endDate),
allDay: true
};
console.log(i); // prints 1,2,3
}
console.log(USER_DAYS) //prints the Array we generated
语句
所以这就变成了
{{1}}
答案 2 :(得分:-1)
您需要使用JSON.parse
解析JSON字符串:
JSON.parse('[ {"endDate":"2017-04-18","nrC":2,"type":"CO","dataD":"2017-04-19","startDate":"2017-04-16"},{"endDate":"2017-04-27","nrC":4,"type":"CP","dataD":"2017-04-23","startDate":"2017-03-26"},{"endDate":"2017-04-27","nrC":7,"type":"CA","dataD":"2017-04-23","startDate":"2017-04-26"} ]')