Notion 迭代后的新版公式有点强
今天写了几段,实现了一套复杂度之前不敢想的计算,又保证了一定的可读性,已经有点在写图数据库查表的感觉了。
这里就不得不说新加的这几个函数:
map(列表, 表达式)
对列表里的每一项执行表达式,输出列表。
官方内置的示例是给一个列表 [1, 2, 3],执行 current+1,得到列表 [2, 3, 4]
但我发现个对我更实用的用法,对于跨数据库的查询,如果传入的列表是 relation,这个公式可以这么玩:
map(prop("关联文章"), current.prop("标题"))
current 指的就是列表中的单个元素,类似 Python 里 for i in x 里面的 i。
如果这里绑定了多个文章的页面,公式就能返回所有这些文章的标题,就像 rollup 那样。
不过新版公式能做的还不止如此,如果我想提取绑定文章中「点赞量大于 100」的文章标题怎么办?
可以里面再套个 filter() 函数:
map(filter(prop("关联文章"), current.prop("点赞")>100), current.prop("标题"))
filter(列表, 表达式) 可以根据表达式筛选列表,返回表达式结果为真的元素构成的列表。
用在 relation 上,就可以跨数据库用绑定页面的属性做筛选了。
刚开始用这些函数是感觉挺厉害,但我也纳闷:写成这样看着还挺复杂的,过段时间看不懂了怎么办?
我发现还有个公式可以用起来,增加可读性。
还是接着上面的公式,改一下变这样:
let(
outperform_articles, filter(prop("关联文章"), current.prop("点赞")>100),
map(outperform_articles, current.prop("标题"))
)
这个函数的用法是 let(变量名, 表达式, 结果表达式)
let 可以把表达式的结果赋给变量,以便后续的运算中直接通过变量运算输出结果。
对于我这种 Notion 数据库的重度用户来说,这意味着再也不用写上又重又长的公式,或是建上一堆辅助运算的属性了。
而且因为支持了运算结果赋给变量,也可以借助自己能看懂的名称把复杂的计算拆分、组块,即便隔一段时间,也不用担心像 Excel 祖传公式那样的体验。
如果要围绕多个变量计算,可以用 lets(),用法和 let() 也很像:
let(变量名1, 表达式1, 变量名2, 表达式2…结果表达式)
总结一下,这条分享了 3 个 Notion 新加的函数:
- map():遍历列表运算
- filter():筛选列表
- let():将表达式的值赋给变量,再用于后续的运算
食品经营许可证 JY11105052461621
©2024 GAMECORES
评论区
共 条评论热门最新