这段dataviewjs代码如何设置路径? #dataview

const files = app.vault.getMarkdownFiles()
const prompt = "<% tp.system.prompt("Query for") %>"

const fileObject = files.map(async (file) => {
const fileLink = "[["+file.name.split(".")[0]+"]]"
const content = await app.vault.cachedRead(file)
return {fileLink, content}
})

Promise.all(fileObject).then(files => {

let values = new Set(files.reduce((acc, file) => {
const lines = file.content.split("\n").filter(line => line.match(new RegExp(prompt, "i")))
if (lines[0] && !file.fileLink.includes("<% tp.file.title %>")) {
if (acc[0]) {
return [...acc, [file.fileLink, lines.join("\n")]]
} else {
return [[file.fileLink, lines.join("\n")]]
}
}
return acc
}, []))

dv.header(1, prompt)
dv.table(["file", "lines"], Array.from(values))

})

这个是搜索全部的,我怎么修改可以搜索指定的文件夹呢?手动改也行。

2 个赞

第一行后面加上 .filter(p=>p.parent.path=="目标文件夹") 试试,文件夹路径要完整,如 a/b 这样

1 个赞

可以,yeah!谢谢!

但是有个问题:只能搜索填写的文件夹,不能搜索下面的子文件夹。

额,是我疏忽了,改为 .filter(p=>p.parent.path.includes("目标文件夹"))

1 个赞

好了,完美!太感谢了!:heart_eyes:

冒昧问一下,这段代码的效果是什么?

用这个脚本做 Templater 模板快速输出你想要查询的字符串,并生成表格。
image

就是这篇文章里最后一个例子。 Obsidian 插件之 Dataview - 知乎 (zhihu.com)

冒昧再请教一下,如何对结果按照创建时间排序呢! :pray:

在那句后面再加上 .sort(function(x,y){return x.stat.ctime-y.stat.ctime}) 就行了

2 个赞

:laughing:谢谢!!!! :laughing:

好家伙我刚修完,早没看见555555

其他都很完美,看了回复添加代码后更加完美,但是有个小问题,会把 引号中的内容本身也过滤出来const prompt = “==” ,我这个==就出现在过滤表格中,如何排除?

请教下,这个排序命令,如何定义升序、或降序呢?谢谢

往上看@ lazyloong的回复,加了这句sort是升序,不加是降序

想调换顺序直接调换xy的位置就行

.sort(function(x,y){return y.stat.ctime-x.stat.ctime})

谢谢,新技能get。