genre: 汇总 YAML
要点:
- 数据重组赋值给新建对象的属性
- 不同 groupBy 构成不同组合
- 不要忘记 groupBy 后用
rows
指代每个组 - 以及用
dv.array()
将普通 JS 数组转为 Dataview 数组
档 1 文本
---
撰写文章:
- 小红
文章排版:
- 小明
---
档 2 文本
---
撰写文章:
- 小明
文章排版:
- 小红
---
档 3 文本
---
撰写文章:
- 小明
- 小红
文章排版:
- 小红
---
代码 1:人员负责项目·带筛选
// tar 筛选人员,handle 筛选工作
let tar = '小明'; dv.header(4, `${tar}负责项目`)
let handle = ['撰写文章', '文章排版']
let files = dv.pages(`"文件目录"`)
let tdata = []
files.map(p=> handle.map(w=> { if (p[w].includes(tar))
return tdata.push({ work: w, link: p.file.link })
})); tdata = dv.array(tdata).groupBy(p=> p.work) // group
dv.table(['负责', '项目'], tdata.map(p=> [p.key, p.rows.link])) // 输出
- JS 方法:
.map()
、.includes()
、.push()
、.groupBy()
代码 2:项目人员负责·不筛选
let files = dv.pages(`"文件目录"`)
let tdata = []
files.map(p=> { for (let prop in p) { for (let i = 0; i < p[prop].length; i++) {
tdata.push({ work: prop, worker: p[prop][i], link: p.file.link })
}}}); tdata = dv.array(tdata).groupBy(p=> p.link) // group
for (let p of tdata) { dv.header(4, p.key);
dv.table(['人员', '负责'], p.rows.groupBy(p=> p.worker).map(p=> [p.key, p.rows.work])) // 再 group
}
相关:Dataviewjs的奇技淫巧 #191;Dataviewjs的奇技淫巧 #222
通过排列组合本话题代码,及参考相关帖子代码,可实现各种自定义数据透视表。