TinyMath 函数编辑

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

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

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

abs( a )编辑

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

参数 类型 描述

a

number | Array.<number>

一个数字或一个数字数组

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

示例

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

add( …​args )编辑

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

参数 类型 描述

…​args

number | Array.<number>

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

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

抛出: 如果 args 包含长度不同的数组,则抛出 'Array length mismatch'

示例

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

number | Array.<number>

一个数字或一个数字数组

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

示例

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

ceil( a )编辑

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

参数 类型 描述

a

number | Array.<number>

一个数字或一个数字数组

返回: number | Array.<number>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

number | Array.<number>

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

min

number | Array.<number>

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

max

number | Array.<number>

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

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

抛出:

  • 如果 min 和/或 max 是长度不同的数组,则抛出 'Array length mismatch'
  • 如果 max 小于 min,则抛出 'Min must be less than max'

示例

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

Array.<any>

任何值的数组

返回: number。数组的长度。

抛出: 如果 a 不是数组,则抛出 'Must pass an array'

示例

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

cube( a )编辑

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

参数 类型 描述

a

number | Array.<number>

一个数字或一个数字数组

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

示例

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

divide( a, b )编辑

将两个数字相除。如果至少将一个数字数组传递到函数中,该函数将按索引应用于每个元素。

参数 类型 描述

a

number | Array.<number>

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

b

number | Array.<number>

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

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

抛出:

  • 'Array length mismatch' 如果 ab 是长度不同的数组
  • 'Cannot divide by 0' 如果 b 等于 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

number | Array.<number>

一个数字或一个数字数组

返回: number | Array.<number>。返回一个数组,其中包含 e^x 的值,其中 xa 的每个元素(如果 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

Array.<any>

任何值的数组

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

示例

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

fix( a )编辑

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

参数 类型 描述

a

number | Array.<number>

一个数字或一个数字数组

返回: number | Array.<number>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

number | Array.<number>

一个数字或一个数字数组

返回: number | Array.<number>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

Array.<any>

任何值的数组

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

示例

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

log( a, b )编辑

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

参数 类型 描述

a

number | Array.<number>

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

b

对象

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

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

抛出:

  • 'Base out of range' 如果 b ⇐ 0
  • 'Must be greater than 0' 如果 a > 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

number | Array.<number>

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

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

抛出: 'Must be greater than 0' 如果 a < 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 )edit

查找传递给函数的一个或多个数字/数字数组的最大值。如果至少传递了一个数字数组给函数,则函数将按索引查找最大值。

参数 类型 描述

…​args

number | Array.<number>

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

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

抛出: 如果 args 包含长度不同的数组,则抛出 'Array length mismatch'

示例

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 )edit

查找传递给函数的一个或多个数字/数字数组的平均值。如果至少传递了一个数字数组给函数,则函数将按索引查找平均值。

参数 类型 描述

…​args

number | Array.<number>

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

返回值: 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 )edit

查找传递给函数的一个或多个数字/数字数组的中位数。如果至少传递了一个数字数组给函数,则函数将按索引查找中位数。

参数 类型 描述

…​args

number | Array.<number>

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

返回值: 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 )edit

查找传递给函数的一个或多个数字/数字数组的最小值。如果至少传递了一个数字数组给函数,则函数将按索引查找最小值。

参数 类型 描述

…​args

number | Array.<number>

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

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

抛出: 'Array length mismatch' 如果 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 )edit

两个数字相除后的余数。如果至少传递了一个数字数组给函数,则函数将按索引方式应用于每个元素。

参数 类型 描述

a

number | Array.<number>

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

b

number | Array.<number>

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

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

抛出:

  • 'Array length mismatch' 如果 ab 是长度不同的数组
  • 'Cannot divide by 0' 如果 b 等于 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 )edit

查找传递给函数的一个或多个数字/数字数组的众数。如果至少传递了一个数字数组给函数,则函数将按索引查找众数。

参数 类型 描述

…​args

number | Array.<number>

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

返回值: 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 )edit

将两个数字相乘。如果至少传递了一个数字数组给函数,则函数将按索引方式应用于每个元素。

参数 类型 描述

a

number | Array.<number>

一个数字或一个数字数组

b

number | Array.<number>

一个数字或一个数字数组

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

抛出: 'Array length mismatch' 如果 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 )edit

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

参数 类型 描述

a

number | Array.<number>

一个数字或一个数字数组

b

number

a 提升的幂

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

抛出: 'Missing exponent' 如果 b 未提供

示例

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

random( a, b )edit

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

参数 类型 描述

a

number

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

b

number

(可选) 必须大于 a

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

抛出: 'Min must be greater than max' 如果 a < 0 且仅传递了 a,或者如果 a > b 且同时传递了 ab

示例

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 )edit

查找传递给函数的一个或多个数字/数字数组的范围。如果至少传递了一个数字数组给函数,则函数将按索引查找范围。

参数 类型 描述

…​args

number | Array.<number>

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

返回值: 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 )edit

查找传递给函数的一个或多个数字/数字数组的范围。如果至少传递了一个数字数组给函数,则函数将按索引查找范围。

参数 类型 描述

…​args

number | Array.<number>

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

返回值: 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 )edit

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

参数 类型 描述

a

number | Array.<number>

一个数字或一个数字数组

b

number

(可选) 小数位数,默认值: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 )edit

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

参数 类型 描述

a

Array.<any>

任何值的数组

返回: number。数组的长度。

抛出: 'Must pass an array' 如果 a 不是一个数组

示例

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

sqrt( a )edit

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

参数 类型 描述

a

number | Array.<number>

一个数字或一个数字数组

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

抛出: 'Unable find the square root of a negative number' 如果 a < 0

示例

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

square( a )edit

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

参数 类型 描述

a

number | Array.<number>

一个数字或一个数字数组

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

示例

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

subtract( a, b )编辑

减去两个数字。如果至少传递了一个数字数组到函数中,则该函数将按索引应用于每个元素。

参数 类型 描述

a

number | Array.<number>

一个数字或一个数字数组

b

number | Array.<number>

一个数字或一个数字数组

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

抛出: 'Array length mismatch' 如果 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