首页 > 解决方案 > JavaScript:我们如何将数组推入数组中?

问题描述

我面临一个小要求的问题。我想使用 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 循环创建一个数组。

注意 :: 约会数组计数可能会根据来自后端的结果而增加

标签: javascriptarraysjson

解决方案


在:

payloadTest.people.appointments = itemsArr;

您正在尝试将约会数组分配为一组人员的属性。相反,您应该将其分配为(或每个?)个人的财产。

所以你可以这样做:

payloadTest.people[0].appointments = itemsArr;

但这只会给其中一个人一系列任命。从您的代码中不清楚您是否希望每个人都具有对相同约会数组的引用(或副本),一个人拥有它,或者您是否认为您正在为每个人创建单独的数组。要做到这一点,您需要一个嵌套循环。

更新

您可能希望将 itemsArr 的声明/初始化移动到循环内,以便每个人都有自己的数组(否则,将对每个人的约会数组进行修改)。

然后,您可能希望使用一个唯一的测试数组来初始化它们 - 因此是一个嵌套循环(例如从 0 到 i 的 j),为每个人创建越来越大的约会列表。但由于它只是您正在创建的测试数据,因此其中的内容完全取决于您。


推荐阅读