【发布时间】:2016-11-17 06:47:37
【问题描述】:
我正在使用 React Native 创建一个应用程序,并希望创建一个带有部分标题的 <ListView>。我一直在关注一些描述如何做到这一点的不同帖子,但我遇到了一个奇怪的问题:
创建<ListView> 的一部分是创建两个数组:一个是Sections 的ID 数组,另一个是由Row ID 组成的数组数组。位于其顶层的两个数组应包含相同数量的元素。
我正在从 json 数据创建数组:
[
{
"id": 12,
"name": "Surfhouse 1",
"guests": [
{
"id": 100,
"name": "Oliver Nicholson",
"email": "oldo.nicho123@gmail.com",
"age": "32"
},
{
"id": 101,
"name": "Nollie Bollie",
"email": "noldo.nicho1234@gmail.com",
"age": "20"
},
{
"id": 102,
"name": "Wootang",
"email": "oldo.nicho3@gmail.com",
"age": "57"
}
]
},
{
"id": 25,
"name": "Surfhouse 2",
"guests": [
{
"id": 200,
"name": "Alycia Woot",
"email": "aly.woot@gmail.com",
"age": "32"
},
{
"id": 201,
"name": "Tim Jang",
"email": "noldo.nicho@gmail.com",
"age": "20"
},
{
"id": 202,
"name": "Hootenany Yeah",
"email": "oldo.nicho123@gmail.com",
"age": "57"
}
]
}
]
而这又用以下函数映射出来(其中accommodation是导入的json数据):
const formatDataForListView = accommodation => {
const dataBlob = {};
const sectionIDs = [];
const rowIDs = [];
accommodation.forEach((accom) => {
sectionIDs.push(accom.id);
dataBlob[accom.id] = accom.name;
rowIDs[accom.id] = []; // initialise empty array associated with Section ID
accom.guests.forEach((guest) => {
rowIDs[accom.id].push(guest.id);
dataBlob[accom.id + ':' + guest.id] = guest;
});
});
一切似乎都很好:我得到了预期的数组,但由于某种原因,RowIDs 数组有 length: 26,而(我相信)它应该只有 2。
rowIDs 数组的长度是怎么变成 26 的?
【问题讨论】:
标签: javascript arrays react-native