1、空白页面里面有一个新增按钮,点击新增行,手动输入行属性,然后生成一个新区域和行 2、每行里面都包含新增和删除按钮,点击新增手动输入行属性,可以在此行后面新增一行;如果新增行与当前行属性一样,则2行合并为一个区域,里面包含2行;如果新增行与当前行属性不一样,则生成一个新的区域和行; 如果在同一区域中,包含多行,在非本区域最后一行上点击新增,新增的行属性与本行的不一致,则会对原来的区域进行一个切割操作 举例(如视屏):目前页面已有A区域,里面包含3行(行属性是A),在第2行上点击新增,新增的行属性是C,那么原来的A区域就会分为2半:上面A区域包含2行,中间是新的C区域包含1行,下面A区域包含1行 3、点击行里面的删除按钮,则删除本行,如果区域中的最后一行被删除,则同时删除此区域提示: 注意需求中的描述,既有区域,区域中又包含行,所以有2层结构,那么数据结构也要与之对应才能实现!!!
时间: 2023-10-08 13:12:48 浏览: 96
论文参考文献标注.pdf
根据需求描述,可以设计以下数据结构:
```
{
areas: [
{
id: 'A_1',
name: 'A',
rows: [
{
id: 'A_1_1',
name: 'A',
isNew: false
},
{
id: 'A_1_2',
name: 'A',
isNew: false
},
{
id: 'A_1_3',
name: 'A',
isNew: false
}
]
},
{
id: 'C_1',
name: 'C',
rows: [
{
id: 'C_1_1',
name: 'C',
isNew: true
}
]
},
{
id: 'A_2',
name: 'A',
rows: [
{
id: 'A_2_1',
name: 'A',
isNew: false
}
]
}
]
}
```
其中,`areas` 数组包含所有区域,每个区域包含 `id`,`name` 和 `rows` 属性。`rows` 数组包含该区域中的所有行,每个行包含 `id`,`name` 和 `isNew` 属性。`isNew` 属性表示该行是否是新添加的行。
当新增一个行时,需要判断其属性是否与当前区域中最后一行的属性一致。如果一致,则将该行添加到当前区域的 `rows` 数组中;否则,需要创建一个新的区域和行,并将新的行添加到新的区域中。
当删除一个行时,需要判断该行是否是区域中最后一行。如果是,则需要将该区域从 `areas` 数组中移除;否则,只需要将该行从 `rows` 数组中移除即可。
当新增一个行时,如果该行的属性与当前区域中最后一行的属性不一致,则需要进行区域的切割操作。具体操作可以先将当前区域中最后一行之后的行移到一个新的数组中,然后创建一个新的区域和行,并将该行添加到新的区域中。最后将原来的区域和新的区域添加到 `areas` 数组中即可。
阅读全文