我面临一个小问题的问题。我想使用JavaScript for循环以下面的格式创建一个JSON数组。
var payloadTest = {
"people": [{
"pic": "sap-icon://employee",
"name": "Ravi",
"role": "team member",
"appointments": [{
"start": new Date("2017", "0", "21", "0", "0"),
"end": new Date("2017", "0", "21", "23", "59"),
"title": "Meet John Miller"
}, {
start: new Date("2017", "0", "18", "0", "0"),
end: new Date("2017", "0", "18", "23", "59"),
title: "Team meeting",
}]
]
}
};
我尝试使用for循环下面的代码。但它没有用。
var itemsArr = [];
var headArr = [];
for (var i = 0; i < resultSet.length; i++) {
var obj = {};
var itm={};
itm.pic="sap-icon://employee";
itm.name=resultSet[i].Rowlabel;
itm.role=resultSet[i].RowId;
headArr.push(itm);
obj.start=resultSet[i].Begda;
obj.end=resultSet[i].Endda;
obj.title=resultSet[i].RowId;
obj.type="Type02";
obj.tentative=false;
itemsArr.push(obj);
//headArr.push(itemsArr);
}
payloadTest.people = headArr;
payloadTest.people.appointments = itemsArr;
有人可以帮助我使用上述JSON格式的for循环创建一个数组。
注意::约会数组计数可能会根据来自后端的结果而增加
答案 0 :(得分:2)
在:
payloadTest.people.appointments = itemsArr;
您正在尝试将约会数组指定为一组人的属性。相反,您应该将其指定为(或每个?)个人的财产。
所以你可以这样做:
payloadTest.people[0].appointments = itemsArr;
但这只会给一个人一系列的约会。从您的代码中不清楚您是否希望每个人都引用(或复制)相同的约会数组,一个人拥有它,或者您是否认为您为每个人创建了单独的数组。要做到以后,你需要一个嵌套循环。
<强>更新强>
您可能希望在循环内移动itemsArr的声明/初始化,以便每个人都有自己的数组(否则,对每个人的数组都会对一个人的约会数组进行修改)
然后,您可能希望使用唯一的测试数组初始化它们 - 所以嵌套循环(例如从0到i的j),为每个人创建递增的更大的约会列表。但是因为它只是测试您正在创建的数据,所以它真的取决于您所属的内容。
答案 1 :(得分:1)
根据以下代码更改您的代码
for (var i = 0; i < resultSet.length; i++) {
var obj = {};
var itm={};
itm.pic="sap-icon://employee";
itm.name=resultSet[i].Rowlabel;
itm.role=resultSet[i].RowId;
headArr.push(itm);
obj.start=resultSet[i].Begda;
obj.end=resultSet[i].Endda;
obj.title=resultSet[i].RowId;
obj.type="Type02";
obj.tentative=false;
itemsArr.push(obj);
itm.appointments = itemsArr; // Added
//headArr.push(itemsArr);
}
payloadTest.people = headArr;
/*payloadTest.people.appointments = itemsArr;*/ // Removed
删除
payloadTest.people.appointments = itemsArr;
因为它不向每个人分配人数组的约会。您必须为每个人记录添加约会以在循环中添加
itm.appointments = itemsArr;
请参阅以下代码段进行多次约会。我使用虚拟数据。 根据您的数据格式进行更改。
var headArr = [];
var payloadTest = [];
var resultSet = [{'Rowlabel' : 'Ravi', 'RowId' : 'team member', 'appointments' :[{'Begda' : 'test', 'Endda' : '1'}, {'Begda' : 'test', 'Endda' : '1'}]}, {'Rowlabel' : 'name', 'RowId' : '1', 'appointments' : [{'Begda' : 'test', 'Endda' : '1'}]}];
for (var i = 0; i < resultSet.length; i++) {
var itm={};
itm.pic="sap-icon://employee";
itm.name=resultSet[i].Rowlabel;
itm.role=resultSet[i].RowId;
var itemsArr = [];
for (var j = 0; j < resultSet[i].appointments.length; j++) {
var obj = {};
obj.start=resultSet[i].appointments[j].Begda;
obj.end=resultSet[i].appointments[j].Endda;
obj.title=resultSet[i].RowId;
obj.type="Type02";
obj.tentative=false;
itemsArr.push(obj);
}
itm.appointments = itemsArr; // Added
headArr.push(itm);
}
payloadTest.people = headArr;
/*payloadTest.people.appointments = itemsArr;*/ // Removed
console.log(headArr);
&#13;
希望它有所帮助。