1.传统的 javascript
2.每一个单元格存在一个 object 数据。
3.根据行索引和列索引,可以快速的实现某个单元格的访问。
4.也可以快速的获得某一行的所有单元格数据。
需求是类似于一个二维表格,但是并不是所有的行,及列都是有数据的,比如第一行只有第一列有数据,第二行没有数据,没有数据的行及列不需要存储。
1
chogath 2020-12-24 10:25:46 +08:00
map
|
2
hahaFck OP @chogath js 中的 map 是后来加的,用不了,但是可以用{}自己实现,就是不知道{}中的 key 访问时,是排序的。
|
3
waiaan 2020-12-24 10:31:03 +08:00
对象数组
|
4
lishen226 2020-12-24 10:33:47 +08:00
[{}] 或 [[{}]]
|
6
wxsm 2020-12-24 11:43:16 +08:00
|
7
wxsm 2020-12-24 11:44:21 +08:00
不需要存储的行列,undefined 占位就行
|
8
GrapeCityChina 2020-12-24 11:51:43 +08:00
用 double,尽量不要使用 object 。
关于这一点,刚好在前几天的 .NET 开发者大会上有过分享,视频回放地址: https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=85101&page=1&extra=#pid339024 |
9
renmu123 2020-12-24 11:55:01 +08:00 via Android
稀疏数组
|
10
no1xsyzy 2020-12-24 12:24:42 +08:00
如果需求没得缩水,那就稀疏表格吧
interface unit {data: any, down?: unit, right?: unit, coordinate: [number, number]} interface row_index {down?: row_index, right?: unit, row_id: number} // interface col_index {down?: unit, right?: col_index, col_id: number} interface table {row_indices: row_index[] /*, col_indices: col_index[] */} 注释范围是列索引,看你这边似乎用不上。 Map 不适合 4. |
11
zqx 2020-12-24 12:46:48 +08:00 via Android
二维数组好理解,读写都方便,想不到不用的理由
|
12
w292614191 2020-12-24 14:09:46 +08:00
数据存储挺简单,复杂的是行列的增删、拖拽、引用关系,要做大量的计算。
|
13
wzzzx 2020-12-24 14:14:16 +08:00
稀疏数组
|
14
hakono 2020-12-24 14:46:28 +08:00
那啥,提醒下 LS 的各位,LZ 这种涉及到数据表格的需要,不是一个简单的 Map 、数组就能胜任的
可以预见,LZ 的需求会渐渐增加——搜索某行,搜索某列,获取指定行数据,获取指定列数据,也有可能会有行列的互相计算 所以 LZ 需要的是一个类似 Python 中 pandas 的 Dataframe 库 搜了下,danfojs 应该符合 LZ 需求 |
16
jones2000 2020-12-24 16:31:03 +08:00
无效单元格 或 无效行都指向同一个全局变量不就可以了. 2 维数组只是存了一个引用
var g_nullitem={ IsNull:true }; var g_nullrow={IsNull:true} [ [ {value:10}, {Value:20}, g_nullitem, g_nullitem,g_nullitem], g_nullrow, [ g_nullitem, {Value:20}, g_nullitem, g_nullitem,g_nullitem], g_nullrow, .............................. ] |