TinyMath 函数
编辑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 |
返回: 数字
| 数组.<数字>
。如果两者都是数字,则返回 a
和 b
的商。如果 a
或 b
是数组,则返回一个包含按索引方式应用于每个元素的商的数组。
抛出:
-
如果
a
和b
是不同长度的数组,则抛出'数组长度不匹配'
-
如果
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
的值,其中 x
是 a
的每个元素。
示例
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 |
数字 | 数组.<数字> |
一个数字或一个数字数组, |
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
的对数。如果 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
的余数。如果 a
或 b
是数组,则返回一个数组,其中包含按索引方式应用于每个元素的余数。
抛出:
-
如果
a
和b
是不同长度的数组,则抛出'数组长度不匹配'
-
如果
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>
。如果两者都是数字,则返回 a
和 b
的乘积。如果 a
或 b
是数组,则返回一个数组,其中包含按索引方式应用于每个元素的乘积。
抛出: 如果 a
和 b
是长度不同的数组,则抛出 '数组长度不匹配'
。
示例
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 |
数字 |
|
返回: number
| Array.<number>
。 a
的 b
次幂。如果 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 |
数字 |
(可选)必须大于 |
返回: number
。如果没有传入任何数字,则返回 0 到 1 之间的随机数。如果只传入一个数字,则返回 0 到 a
之间的随机数。如果传入两个数字,则返回 a
和 b
之间的随机数。
抛出: 如果仅传入 a
时 a
< 0,或者当传入 a
和 b
时 a
> 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>
。如果两者都是数字,则返回 a
和 b
的差值,或者返回一个按索引方式应用于每个元素的差值数组。
抛出: 如果 a
和 b
是长度不同的数组,则抛出 '数组长度不匹配'
。
示例
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