Dataview 中的数值运算函数
既然有数值这种数据类型,我们免不了需要对他们进行一些运算,如果单纯的加减乘除无法满足我们的各种需求,可以在下边找找有没有你用得上的函数,比如一些四舍五入或者取整的函数,一些修改小数点后显示位数的函数,求和函数,求最大、最小和平均值的函数等。大多数函数的功能其实从他们的名字就能猜测出来。
四舍五入和取整函数
round(number, [digits])
- 功能:
round 有整数的意思,这里是对数值进行四舍五入;
- 输入值:number, [digits]
number 说明输入值的数据类型应该是一个数值,digits 有中括号说明这个位置可有可无,用于确定四舍五入的精度,或者说是保留的小数个数。默认四舍五入为整数,也就是 digits 的默认值为 0。
- 示例:
round(16.555555) => 四舍五入为 7
round(16.555555, 2) => 第二位数是2,说明保留两位小数,结果为 16.56
在 Dataview实战-制作一个倒计时或者正计时列表 中大量运用了这个函数。
trunc(number)
- 功能:
trunc 的翻译就是:将数字截尾取整,这个函数的作用就是保留整数部分。注意是截断,结果不是四舍五入,而是向 0 取整。
- 输入值:number
number 说明输入值的数据类型应该是一个数值。
- 示例:
trunc(12.937) => 结果为 12
trunc(-93.33333) => 结果为 -93
trunc(-0.837764) => 结果为 0
floor(number)
- 功能:
floor 是地板的意思,功能是向下取整。
- 输入值:number
number 说明输入值的数据类型应该是一个数值。
- 示例:
floor(12.937) = 结果为 12
floor(-93.33333) = 结果为 -94
floor(-0.837764) = 结果为 -1
ceil(number)
- 功能:
ceil 是天花板的意思,功能是向上取整。
- 输入值:
number 说明输入值的数据类型应该是一个数值。
- 示例:
ceil(12.937) = 结果为 13
ceil(-93.33333) = 结果为 -93
ceil(-0.837764) = 结果为 0
对一组数值进行运算
min(a, b, ..)
- 功能:
min 是分钟的意思,所以这里的 min 是 minimize 的缩写,译为最小化,不难猜测,这个函数可以帮我们挑出我们给他的所有数中最小的那个。
- 输入值:a,b,…
输入给的提示词是没有任何含义的字母,输入值可以是一组可以比较大小的变量,也可以是一个数组。
- 示例:
min(1, 2, 3) = 输入值为一组变量时:1
min([1, 2, 3]) = 输入值为一个数组时:1
min("a", "ab", "abc") = 输入值为一组变量且变量为字符串时:"a",字符串也是可以比较大小的。
不要这样写:
min(0, [1,2,3], -1) = 会返回 1,2,3 而不是 -1,不在同一层无法正常比较
max(a, b, ...)
- 功能:
max 是 maximize 的缩写,译为最大化,可以得知这个函数可以挑出最大的数;
- 输入值:a,b,…
输入给的提示词是没有任何含义的字母,输入值可以是一组可以比较大小的变量,也可以是一个数组。
- 示例:
max(1, 2, 3) = 输入值为一组变量时:3
max([1, 2, 3]) = 输入值为一个数组时:3
max("a", "ab", "abc") = 输入值为一组变量且变量为字符串时:"abc",字符串也是可以比较大小的。
不要这样写:
max(0, [1,2,3], -1) = 会返回 0 而不是 3,不在同一层无法正常比较
sum(array)
- 功能:
sum 就是总和的意思,这个函数可以为给定值求和
- 输入值:array
输入值的数据类型应该是数组,不要写成 sum(1,2,3)
,应该写成 sum([1,2,3])
,可以用 行内查询 试一试。
- 示例:
sum([1, 2, 3]) = 求和为 6
sum([]) = 空值求和也为空,返回 null
如果有空值,应该用 nonnull 函数去除数组中的空值之后才能求和,否则会报错
sum([null, 1, 8]) = 错误输入,报错
sum(nonnull([null, 1, 8])) = 求和为 9
product(array)
- 功能:
product 函数用于计算数字的累乘
- 输入值:array
输入值的数据类型应该是数组,不要写成 product(1,2,3)
,应该写成 product([1,2,3])
,可以用 行内查询 试一试。
- 示例:
product([1,2,3]) = 累乘得到 6
product([]) = 给空值会返回空值 null
如果有空值,应该用 nonnull 函数去除数组中的空值之后才能累乘,否则会报错
product([null, 1, 2, 4]) = 错误输入,报错
product(nonnull([null, 1, 2, 4])) = 累乘得到 8
average(array)
- 功能:
average 函数用于求平均数
- 输入值:array
输入值的数据类型应该是数组,不要写成 average(1,2,3)
,应该写成 average([1,2,3])
,可以用 行内查询 试一试。
- 示例:
average([1, 2, 3]) = 平均值为 2
average([]) = 给空值会返回空值 null
如果有空值,应该用 nonnull 函数去除数组中的空值之后才能求平均值,否则会报错
average([null, 1, 2]) = 错误输入,报错
average(nonnull([null, 1, 2])) = 平均值为 1.5
minby(array, function)
- 功能:
根据给定的方法找出最小值(minimize the array by a function),有的时候我们需要的最小不是数值的最小,可能是结果某种运算后的最小,比如根据对象的某一个属性作为比较依据。
- 输入值:array, function
需要给定挑选用的数组和挑选的方法,这个 function 一般是 lambda 表达式;
- 示例:
minby([1, 2, 3], (k) => k) => 根据 k 映射到 k 的规则得到的最小值为 1
minby([1, 2, 3], (k) => 0 - k) => 根据 k 映射到 0 - k 的规则得到的最小值为 3
minby(this.file.tasks, (k) => k.due) => 根据 k 的 due 属性的大小作为比较的值再取最小
maxby(array, function)
- 功能:
根据给定的方法找出最大值(maximizes the array by a function),有的时候我们需要的最大不是数值的最大,可能是结果某种运算后的最大,比如根据对象的某一个属性作为比较依据。
- 输入值:array, function
需要给定挑选用的数组和挑选的方法,这个 function 一般是 lambda 表达式;
- 示例:
maxby([1, 2, 3], (k) => k) => 根据 k 映射到 k 的规则得到的最大值为 3
maxby([1, 2, 3], (k) => 0 - k) => 根据 k 映射到 0 - k 的规则得到的最大值为 1
maxby(this.file.tasks, (k) => k.due) => 根据 k 的 due 属性的大小作为比较的值再取最大
讨论
若阁下有独到的见解或新颖的想法,诚邀您在文章下方留言,与大家共同探讨。
反馈交流
其他渠道
版权声明
版权声明:所有 PKMer 文章如果需要转载,请附上原文出处链接。