/
本页描述了表格操作函数 文档 ↗,它们允许你对任意类型的表格进行排序、过滤与计算,包括纯 Markdown 表格以及那些从 CSV 加载的表格。
.tablesort {2} order:{descending}
.csv {assets/people.csv}| Username | Birth year | Favorite food | Favorite drink |
|---|---|---|---|
| iamgio | 2002 | Pasta | Iced tea |
| john | 1992 | Chicken | Orange juice |
| daniel | 1986 | Sushi | Beer |
.tablesort 函数基于某一特定列的值对表格进行排序。
| 参数 | 说明 | 可接受值 |
|---|---|---|
column | 列的索引,从 1 开始。 | 1 到列的总数。 |
order | 排序方向。 | ascending(默认)、descending |
.tablesort {2} order:{descending}
| Name | Age | City |
|------|-----|------|
| John | 25 | NY |
| Lisa | 32 | LA |
| Mike | 19 | CHI || Name | Age | City |
|---|---|---|
| Lisa | 32 | LA |
| John | 25 | NY |
| Mike | 19 | CHI |
排序会遵循人类最自然的对字符串排序的方式(字母数字排序):
.tablesort {2}
| Item | Price |
|----------|-------|
| Pencil | $1 |
| Eraser | $0.50 |
| Backpack | $20 |
| Notebook | $3 || Item | Price |
|---|---|
| Eraser | $0.50 |
| Pencil | $1 |
| Notebook | $3 |
| Backpack | $20 |
.tablefilter 函数根据某一特定列的值来保留或移除行。
| 参数 | 说明 | 可接受值 |
|---|---|---|
column | 列的索引,从 1 开始。 | 1 到列的总数。 |
filter | 一个 lambda,返回每一行是否应当被保留,其输入为该行在对应列中的单元格值。 | Dynamic → Boolean 的 lambda |
.tablefilter {2} {x: .x::isgreater {20}}
| Name | Age | City |
|------|-----|------|
| John | 25 | NY |
| Lisa | 32 | LA |
| Mike | 19 | CHI || Name | Age | City |
|---|---|---|
| John | 25 | NY |
| Lisa | 32 | LA |
.tablecompute 函数计算某一列中的单元格,并将结果追加到一个新行。
| 参数 | 说明 | 可接受值 |
|---|---|---|
column | 列的索引,从 1 开始。 | 1 到列的总数。 |
compute | 一个 lambda,返回计算后的值,其输入为该列中单元格的集合。 | Iterable → Dynamic 的 lambda |
请参阅Iterable ,了解集合上可用的操作。
.tablecompute {2} {x: .x::average::round}
| Name | Age | City |
|------|-----|------|
| John | 25 | NY |
| Lisa | 32 | LA |
| Mike | 19 | CHI || Name | Age | City |
|---|---|---|
| John | 25 | NY |
| Lisa | 32 | LA |
| Mike | 19 | CHI |
| 25 |
你可以链式组合多个表格操作。操作的顺序由内到外:
.tablecompute {2} {x: .x::average::round}
.tablesort {2}
| Name | Age | City |
|------|-----|------|
| John | 25 | NY |
| Lisa | 32 | LA |
| Mike | 19 | CHI || Name | Age | City |
|---|---|---|
| Mike | 19 | CHI |
| John | 25 | NY |
| Lisa | 32 | LA |
| 25 |
.tablecolumn 函数从某一特定列的单元格中提取出值,并将其作为一个 Iterable 返回。
| 参数 | 说明 | 可接受值 |
|---|---|---|
column | 列的索引,从 1 开始。 | 1 到列的总数。 |
.var {values}
.tablecolumn {2}
| Name | Age | City |
|------|-----|------|
| John | 25 | NY |
| Lisa | 32 | LA |
| Mike | 19 | CHI |
.values::first25
此外,.tablecolumns 函数将表格中的所有列作为一个由可迭代对象组成的可迭代对象返回。当你需要从同一张表格访问多个列时,相比多次调用 .tablecolumn,这种方式更高效。
.var {columns}
.tablecolumns
| Name | Age | City |
|------|-----|------|
| John | 25 | NY |
| Lisa | 32 | LA |
| Mike | 19 | CHI |
.foreach {.columns}
col:
.col::firstJohn
25
NY