Dataview 中的数值运算函数

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 属性的大小作为比较的值再取最大

讨论

若阁下有独到的见解或新颖的想法,诚邀您在文章下方留言,与大家共同探讨。



反馈交流

其他渠道

版权声明