TinyMath 函数

编辑

TinyMath 提供了一组可以与 Canvas 表达式语言一起使用的函数,以执行复杂的数学计算。请继续阅读有关 TinyMath 中可用函数的详细信息,包括每个函数接受哪些参数、该函数的返回值以及每个函数的行为示例。

大多数函数接受数组并将 JavaScript Math 方法应用于该数组的每个元素。对于接受多个数组作为参数的函数,该函数通常按索引进行计算。

任何函数都可以被另一个函数包装,只要内部函数的返回类型与外部函数的可接受参数类型匹配即可。

abs( a )

编辑

计算一个数字的绝对值。对于数组,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

一个数字或一个数字数组

返回: 数字 | 数组.<数字>a 的绝对值。如果 a 是数组,则返回一个包含每个元素的绝对值的数组。

示例

abs(-1) // returns 1
abs(2) // returns 2
abs([-1 , -2, 3, -4]) // returns [1, 2, 3, 4]

add( …​args )

编辑

计算传入该函数的一个或多个数字/数组的总和。如果至少一个数字数组被传入该函数,该函数将按索引计算总和。

参数 类型 描述

…​args

数字 | 数组.<数字>

一个或多个数字或数字数组

返回: 数字 | 数组.<数字>。如果 args 仅包含数字,则返回 args 中所有数字的总和。如果 args 包含至少一个数组,则返回每个索引处元素的总和数组,包括在每个索引处的计算中 args 中的所有标量数字。

抛出: 如果 args 包含不同长度的数组,则抛出 '数组长度不匹配'

示例

add(1, 2, 3) // returns 6
add([10, 20, 30, 40], 10, 20, 30) // returns [70, 80, 90, 100]
add([1, 2], 3, [4, 5], 6) // returns [(1 + 3 + 4 + 6), (2 + 3 + 5 + 6)] = [14, 16]

cbrt( a )

编辑

计算一个数字的立方根。对于数组,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

一个数字或一个数字数组

返回: 数字 | 数组.<数字>a 的立方根。如果 a 是数组,则返回一个包含每个元素的立方根的数组。

示例

cbrt(-27) // returns -3
cbrt(94) // returns 4.546835943776344
cbrt([27, 64, 125]) // returns [3, 4, 5]

ceil( a )

编辑

计算一个数字的上限,即,将一个数字朝正无穷大方向舍入。对于数组,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

一个数字或一个数字数组

返回: 数字 | 数组.<数字>a 的上限。如果 a 是数组,则返回一个包含每个元素的上限的数组。

示例

ceil(1.2) // returns 2
ceil(-1.8) // returns -1
ceil([1.1, 2.2, 3.3]) // returns [2, 3, 4]

clamp( …​a, min, max )

编辑

将值限制在给定范围内,并返回可用的闭合值。如果仅提供 min,则值仅限制为下限。

参数 类型 描述

…​a

数字 | 数组.<数字>

一个或多个数字或数字数组

min

数字 | 数组.<数字>

(可选)此函数将返回的最小值。

max

数字 | 数组.<数字>

(可选)此函数将返回的最大值。

返回: 数字 | 数组.<数字>min (包括)和 max (包括)之间的最接近的值。返回一个数组,其中每个索引处的值大于或等于 min 且小于或等于 max(如果提供)。

抛出:

  • 如果 min 和/或 max 是不同长度的数组,则抛出 '数组长度不匹配'
  • 如果 max 小于 min,则抛出 '最小值必须小于最大值'

示例

clamp(1, 2, 3) // returns 2
clamp([10, 20, 30, 40], 15, 25) // returns [15, 20, 25, 25]
clamp(10, [15, 2, 4, 20], 25) // returns [15, 10, 10, 20]
clamp(35, 10, [20, 30, 40, 50]) // returns [20, 30, 35, 35]
clamp([1, 9], 3, [4, 5]) // returns [clamp([1, 3, 4]), clamp([9, 3, 5])] = [3, 5]

count( a )

编辑

返回数组的长度。是 size 的别名。

参数 类型 描述

a

数组.<任何>

任何值的数组

返回: 数字。数组的长度。

抛出: 如果 a 不是数组,则抛出 '必须传递一个数组'

示例

count([]) // returns 0
count([-1, -2, -3, -4]) // returns 4
count(100) // returns 1

cube( a )

编辑

计算一个数字的立方。对于数组,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

一个数字或一个数字数组

返回: 数字 | 数组.<数字>a 的立方。如果 a 是数组,则返回一个包含每个元素的立方的数组。

示例

cube(-3) // returns -27
cube([3, 4, 5]) // returns [27, 64, 125]

divide( a, b )

编辑

将两个数字相除。如果至少一个数字数组被传入该函数,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

被除数,一个数字或一个数字数组

b

数字 | 数组.<数字>

除数,一个数字或一个数字数组,b != 0

返回: 数字 | 数组.<数字>。如果两者都是数字,则返回 ab 的商。如果 ab 是数组,则返回一个包含按索引方式应用于每个元素的商的数组。

抛出:

  • 如果 ab 是不同长度的数组,则抛出 '数组长度不匹配'
  • 如果 b 等于 0 或包含 0,则抛出 '不能除以 0'

示例

divide(6, 3) // returns 2
divide([10, 20, 30, 40], 10) // returns [1, 2, 3, 4]
divide(10, [1, 2, 5, 10]) // returns [10, 5, 2, 1]
divide([14, 42, 65, 108], [2, 7, 5, 12]) // returns [7, 6, 13, 9]

exp( a )

编辑

计算 e^x,其中 e 是欧拉数。对于数组,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

一个数字或一个数字数组

返回: 数字 | 数组.<数字>。如果 a 是数组,则返回一个数组,其中包含计算出的 e^x 的值,其中 xa 的每个元素。

示例

exp(2) // returns e^2 = 7.3890560989306495
exp([1, 2, 3]) // returns [e^1, e^2, e^3] = [2.718281828459045, 7.3890560989306495, 20.085536923187668]

first( a )

编辑

返回数组的第一个元素。如果传入的不是数组,则返回输入。

参数 类型 描述

a

数组.<任何>

任何值的数组

返回: *a 的第一个元素。如果 a 不是数组,则返回 a

示例

first(2) // returns 2
first([1, 2, 3]) // returns 1

fix( a )

编辑

计算一个数字的 fix,即,将一个数字朝 0 方向舍入。对于数组,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

一个数字或一个数字数组

返回: 数字 | 数组.<数字>a 的 fix。如果 a 是数组,则返回一个包含每个元素的 fix 的数组。

示例

fix(1.2) // returns 1
fix(-1.8) // returns -1
fix([1.8, 2.9, -3.7, -4.6]) // returns [1, 2, -3, -4]

floor( a )

编辑

计算一个数字的下限,即,将一个数字朝负无穷大方向舍入。对于数组,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

一个数字或一个数字数组

返回: 数字 | 数组.<数字>a 的下限。如果 a 是数组,则返回一个包含每个元素的下限的数组。

示例

floor(1.8) // returns 1
floor(-1.2) // returns -2
floor([1.7, 2.8, 3.9]) // returns [1, 2, 3]

last( a )

编辑

返回数组的最后一个元素。如果传入的不是数组,则返回输入。

参数 类型 描述

a

数组.<任何>

任何值的数组

返回: *a 的最后一个元素。如果 a 不是数组,则返回 a

示例

last(2) // returns 2
last([1, 2, 3]) // returns 3

log( a, b )

编辑

计算一个数字的对数。对于数组,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

一个数字或一个数字数组,a 必须大于 0

b

对象

(可选)对数的底数。如果未提供值,则默认底数为 e,并计算自然对数。

返回: 数字 | 数组.<数字>a 的对数。如果 a 是数组,则返回一个包含每个元素的对数的数组。

抛出:

  • 如果 b ⇐ 0,则抛出 '底数超出范围'
  • 如果 a > 0,则抛出 '必须大于 0'

示例

log(1) // returns 0
log(64, 8) // returns 2
log(42, 5) // returns 2.322344707681546
log([2, 4, 8, 16, 32], 2) // returns [1, 2, 3, 4, 5]

log10( a )

编辑

计算一个数字的以 10 为底的对数。对于数组,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

一个数字或一个数字数组,a 必须大于 0

返回: 数字 | 数组.<数字>a 的对数。如果 a 是数组,则返回一个包含每个元素的以 10 为底的对数的数组。

抛出: 如果 a < 0,则抛出 '必须大于 0'

示例

log(10) // returns 1
log(100) // returns 2
log(80) // returns 1.9030899869919433
log([10, 100, 1000, 10000, 100000]) // returns [1, 2, 3, 4, 5]

max( …​args )

编辑

查找传入该函数的一个或多个数字/数字数组的最大值。如果至少一个数字数组被传入该函数,该函数将按索引查找最大值。

参数 类型 描述

…​args

数字 | 数组.<数字>

一个或多个数字或数字数组

返回: number | Array.<number>。如果 args 仅包含数字,则返回所有数字的最大值。如果 args 至少包含一个数组,则返回一个数组,其中包含每个索引的最大值,并在每个索引的计算中包括 args 中的所有标量数字。

抛出: 如果 args 包含不同长度的数组,则抛出 '数组长度不匹配'

示例

max(1, 2, 3) // returns 3
max([10, 20, 30, 40], 15) // returns [15, 20, 30, 40]
max([1, 9], 4, [3, 5]) // returns [max([1, 4, 3]), max([9, 4, 5])] = [4, 9]

mean( …​args )

编辑

查找传入函数的一个或多个数字/数字数组的平均值。如果至少有一个数字数组被传入函数,该函数将按索引查找平均值。

参数 类型 描述

…​args

数字 | 数组.<数字>

一个或多个数字或数字数组

返回: number | Array.<number>。如果 args 仅包含数字,则返回所有数字的平均值。如果 args 至少包含一个数组,则返回一个数组,其中包含每个索引的平均值,并在每个索引的计算中包括 args 中的所有标量数字。

示例

mean(1, 2, 3) // returns 2
mean([10, 20, 30, 40], 20) // returns [15, 20, 25, 30]
mean([1, 9], 5, [3, 4]) // returns [mean([1, 5, 3]), mean([9, 5, 4])] = [3, 6]

median( …​args )

编辑

查找传入函数的一个或多个数字/数字数组的中位数。如果至少有一个数字数组被传入函数,该函数将按索引查找中位数。

参数 类型 描述

…​args

数字 | 数组.<数字>

一个或多个数字或数字数组

返回: number | Array.<number>。如果 args 仅包含数字,则返回所有数字的中位数。如果 args 至少包含一个数组,则返回一个数组,其中包含每个索引的中位数,并在每个索引的计算中包括 args 中的所有标量数字。

示例

median(1, 1, 2, 3) // returns 1.5
median(1, 1, 2, 2, 3) // returns 2
median([10, 20, 30, 40], 10, 20, 30) // returns [15, 20, 25, 25]
median([1, 9], 2, 4, [3, 5]) // returns [median([1, 2, 4, 3]), median([9, 2, 4, 5])] = [2.5, 4.5]

min( …​args )

编辑

查找传入函数的一个或多个数字/数字数组的最小值。如果至少有一个数字数组被传入函数,该函数将按索引查找最小值。

参数 类型 描述

…​args

数字 | 数组.<数字>

一个或多个数字或数字数组

返回: number | Array.<number>。如果 args 仅包含数字,则返回所有数字的最小值。如果 args 中至少有一个数组,则返回一个数组,其中包含每个索引的最小值,并在每个索引的计算中包括 args 中的所有标量数字。

抛出: 如果 args 包含长度不同的数组,则抛出 '数组长度不匹配'

示例

min(1, 2, 3) // returns 1
min([10, 20, 30, 40], 25) // returns [10, 20, 25, 25]
min([1, 9], 4, [3, 5]) // returns [min([1, 4, 3]), min([9, 4, 5])] = [1, 4]

mod( a, b )

编辑

两个数字相除后的余数。如果至少有一个数字数组被传入函数,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

被除数,一个数字或一个数字数组

b

数字 | 数组.<数字>

除数,一个数字或一个数字数组,b != 0

返回: number | Array.<number>。如果两者都是数字,则返回 a 除以 b 的余数。如果 ab 是数组,则返回一个数组,其中包含按索引方式应用于每个元素的余数。

抛出:

  • 如果 ab 是不同长度的数组,则抛出 '数组长度不匹配'
  • 如果 b 等于 0 或包含 0,则抛出 '不能除以 0'

示例

mod(10, 7) // returns 3
mod([11, 22, 33, 44], 10) // returns [1, 2, 3, 4]
mod(100, [3, 7, 11, 23]) // returns [1, 2, 1, 8]
mod([14, 42, 65, 108], [5, 4, 14, 2]) // returns [5, 2, 9, 0]

mode( …​args )

编辑

查找传入函数的一个或多个数字/数字数组的众数。如果至少有一个数字数组被传入函数,该函数将按索引查找众数。

参数 类型 描述

…​args

数字 | 数组.<数字>

一个或多个数字或数字数组

返回: number | Array.<Array.<number>>。如果 args 仅包含数字,则返回所有数字的众数值的数组。如果 args 至少包含一个数组,则返回一个数组的数组,其中包含每个索引的众数值,并在每个索引的计算中包括 args 中的所有标量数字。

示例

mode(1, 1, 2, 3) // returns [1]
mode(1, 1, 2, 2, 3) // returns [1,2]
mode([10, 20, 30, 40], 10, 20, 30) // returns [[10], [20], [30], [10, 20, 30, 40]]
mode([1, 9], 1, 4, [3, 5]) // returns [mode([1, 1, 4, 3]), mode([9, 1, 4, 5])] = [[1], [4, 5, 9]]

multiply( a, b )

编辑

将两个数字相乘。如果至少有一个数字数组被传入函数,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

一个数字或一个数字数组

b

数字 | 数组.<数字>

一个数字或一个数字数组

返回: number | Array.<number>。如果两者都是数字,则返回 ab 的乘积。如果 ab 是数组,则返回一个数组,其中包含按索引方式应用于每个元素的乘积。

抛出: 如果 ab 是长度不同的数组,则抛出 '数组长度不匹配'

示例

multiply(6, 3) // returns 18
multiply([10, 20, 30, 40], 10) // returns [100, 200, 300, 400]
multiply(10, [1, 2, 5, 10]) // returns [10, 20, 50, 100]
multiply([1, 2, 3, 4], [2, 7, 5, 12]) // returns [2, 14, 15, 48]

pow( a, b )

编辑

计算一个数字的立方根。对于数组,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

一个数字或一个数字数组

b

数字

a 的幂

返回: number | Array.<number>ab 次幂。如果 a 是数组,则返回一个数组,其中包含每个元素的 b 次幂。

抛出: 如果没有提供 b,则抛出 '缺少指数'

示例

pow(2,3) // returns 8
pow([1, 2, 3], 4) // returns [1, 16, 81]

random( a, b )

编辑

在给定范围内生成一个随机数,其中下界是包含的,上界是排除的。如果没有传入任何数字,它将返回一个 0 到 1 之间的数字。如果只传入一个数字,它将返回一个 0 到传入数字之间的数字。

参数 类型 描述

a

数字

(可选)如果未提供 b,则必须大于 0。

b

数字

(可选)必须大于 a

返回: number。如果没有传入任何数字,则返回 0 到 1 之间的随机数。如果只传入一个数字,则返回 0 到 a 之间的随机数。如果传入两个数字,则返回 ab 之间的随机数。

抛出: 如果仅传入 aa < 0,或者当传入 aba > b,则抛出 '最小值必须大于最大值'

示例

random() // returns a random number between 0 (inclusive) and 1 (exclusive)
random(10) // returns a random number between 0 (inclusive) and 10 (exclusive)
random(-10,10) // returns a random number between -10 (inclusive) and 10 (exclusive)

range( …​args )

编辑

查找传入函数的一个或多个数字/数字数组的范围。如果至少有一个数字数组被传入函数,该函数将按索引查找范围。

参数 类型 描述

…​args

数字 | 数组.<数字>

一个或多个数字或数字数组

返回: number | Array.<number>。如果 args 仅包含数字,则返回所有数字的范围值。如果 args 至少包含一个数组,则返回一个数组,其中包含每个索引的范围值,并在每个索引的计算中包括 args 中的所有标量数字。

示例

range(1, 2, 3) // returns 2
range([10, 20, 30, 40], 15) // returns [5, 5, 15, 25]
range([1, 9], 4, [3, 5]) // returns [range([1, 4, 3]), range([9, 4, 5])] = [3, 5]

range( …​args )

编辑

查找传入函数的一个或多个数字/数字数组的范围。如果至少有一个数字数组被传入函数,该函数将按索引查找范围。

参数 类型 描述

…​args

数字 | 数组.<数字>

一个或多个数字或数字数组

返回: number | Array.<number>。如果 args 仅包含数字,则返回所有数字的范围值。如果 args 至少包含一个数组,则返回一个数组,其中包含每个索引的范围值,并在每个索引的计算中包括 args 中的所有标量数字。

示例

range(1, 2, 3) // returns 2
range([10, 20, 30, 40], 15) // returns [5, 5, 15, 25]
range([1, 9], 4, [3, 5]) // returns [range([1, 4, 3]), range([9, 4, 5])] = [3, 5]

round( a, b )

编辑

默认情况下将数字四舍五入到最接近的整数,或者四舍五入到指定的小数位(如果作为 b 传入)。对于数组,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

一个数字或一个数字数组

b

数字

(可选)小数位数,默认值:0。

返回: number | Array.<number>a 的舍入值。如果 a 是数组,则返回一个数组,其中包含每个元素的舍入值。

示例

round(1.2) // returns 2
round(-10.51) // returns -11
round(-10.1, 2) // returns -10.1
round(10.93745987, 4) // returns 10.9375
round([2.9234, 5.1234, 3.5234, 4.49234324], 2) // returns [2.92, 5.12, 3.52, 4.49]

size( a )

编辑

返回数组的长度。是 count 的别名。

参数 类型 描述

a

数组.<任何>

任何值的数组

返回: 数字。数组的长度。

抛出: 如果 a 不是数组,则抛出 '必须传入一个数组'

示例

size([]) // returns 0
size([-1, -2, -3, -4]) // returns 4
size(100) // returns 1

sqrt( a )

编辑

计算一个数字的平方根。对于数组,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

一个数字或一个数字数组

返回: number | Array.<number>a 的平方根。如果 a 是数组,则返回一个数组,其中包含每个元素的平方根。

抛出: 如果 a < 0,则抛出 '无法找到负数的平方根'

示例

sqrt(9) // returns 3
sqrt(30) //5.477225575051661
sqrt([9, 16, 25]) // returns [3, 4, 5]

square( a )

编辑

计算一个数字的平方。对于数组,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

一个数字或一个数字数组

返回: number | Array.<number>a 的平方。如果 a 是数组,则返回一个数组,其中包含每个元素的平方。

示例

square(-3) // returns 9
square([3, 4, 5]) // returns [9, 16, 25]

subtract( a, b )

编辑

将两个数字相减。如果至少有一个数字数组被传入函数,该函数将按索引方式应用于每个元素。

参数 类型 描述

a

数字 | 数组.<数字>

一个数字或一个数字数组

b

数字 | 数组.<数字>

一个数字或一个数字数组

返回: number | Array.<number>。如果两者都是数字,则返回 ab 的差值,或者返回一个按索引方式应用于每个元素的差值数组。

抛出: 如果 ab 是长度不同的数组,则抛出 '数组长度不匹配'

示例

subtract(6, 3) // returns 3
subtract([10, 20, 30, 40], 10) // returns [0, 10, 20, 30]
subtract(10, [1, 2, 5, 10]) // returns [9, 8, 5, 0]
subtract([14, 42, 65, 108], [2, 7, 5, 12]) // returns [12, 35, 52, 96]

sum( …​args )

编辑

计算传入函数的一个或多个数字/数组的和。如果至少传入一个数组,该函数将对一个或多个数字/数字数组以及数组的不同值求和。Sum 接受不同长度的数组。

返回: number。一个或多个数字/数字数组(包括数组中的不同值)的和

示例

sum(1, 2, 3) // returns 6
sum([10, 20, 30, 40], 10, 20, 30) // returns 160
sum([1, 2], 3, [4, 5], 6) // returns sum(1, 2, 3, 4, 5, 6) = 21
sum([10, 20, 30, 40], 10, [1, 2, 3], 22) // returns sum(10, 20, 30, 40, 10, 1, 2, 3, 22) = 138

unique( a )

编辑

计算数组中唯一值的数量。

返回: number。数组中唯一值的数量。如果 a 不是数组,则返回 1。

示例

unique(100) // returns 1
unique([]) // returns 0
unique([1, 2, 3, 4]) // returns 4
unique([1, 2, 3, 4, 2, 2, 2, 3, 4, 2, 4, 5, 2, 1, 4, 2]) // returns 5