我正在使用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
数组的长度是多少?
答案 0 :(得分:1)
因为您在索引12
处有一个值,在索引为25
时有一个值。这使得数组的length为26,因为它采用最大的索引并为长度添加一个,因为该数组基于零。
如果您只想要这两个项目,那么请使用索引0
和1
而不使用备用项目,或使用带有密钥的对象。
答案 1 :(得分:0)
我建议rowID最好是对象。初始化数组的特定索引不是一个好习惯,我们有key =&gt;的对象。价值目的。如果初始化数组中的特定索引,它会将所有以前的索引设置为undefined,这是不好的。使用对象的实现在普通的javascript -
中看起来像这样
rand_win.o and c_zlib.o
&#13;