函数 compareNatural #

以确定性的、自然的方式比较任何类型的两个值。

对于数值,该函数的功能与 math.compare 相同。对于无法进行数学比较的值类型,该函数会以自然的方式进行比较。

对于数值,当 x 和 y 之间的相对差小于配置的 relTol 和 absTol 时,将认为它们相等。该函数不能用于比较小于大约 2.22e-16 的值。

对于复数,首先比较实部。如果相等,则比较虚部。

字符串使用自然排序算法进行比较,该算法通过一些启发式方法以“逻辑”方式对字符串进行排序。这与 compare 函数不同,后者将字符串转换为数值并进行比较。另一方面,compareText 函数按字典顺序比较文本。

数组和矩阵逐值比较,直到遇到不相等的值对。对象按排序后的键进行比较,直到键或其值不相等。

Syntax #

math.compareNatural(x, y)

Parameters #

Parameter Type Description
x * 要比较的第一个值
y * 要比较的第二个值

Returns #

Type Description
number 返回比较结果:当 x > y 时为 1,当 x < y 时为 -1,当 x == y 时为 0。

Throws #

Type | Description —- | ———–

Examples #

math.compareNatural(6, 1)              // returns 1
math.compareNatural(2, 3)              // returns -1
math.compareNatural(7, 7)              // returns 0

math.compareNatural('10', '2')         // returns 1
math.compareText('10', '2')            // returns -1
math.compare('10', '2')                // returns 1

math.compareNatural('Answer: 10', 'Answer: 2') // returns 1
math.compareText('Answer: 10', 'Answer: 2')    // returns -1
math.compare('Answer: 10', 'Answer: 2')
    // Error: Cannot convert "Answer: 10" to a number

const a = math.unit('5 cm')
const b = math.unit('40 mm')
math.compareNatural(a, b)              // returns 1

const c = math.complex('2 + 3i')
const d = math.complex('2 + 4i')
math.compareNatural(c, d)              // returns -1

math.compareNatural([1, 2, 4], [1, 2, 3]) // returns 1
math.compareNatural([1, 2, 3], [1, 2])    // returns 1
math.compareNatural([1, 5], [1, 2, 3])    // returns 1
math.compareNatural([1, 2], [1, 2])       // returns 0

math.compareNatural({a: 2}, {a: 4})       // returns -1

另请参阅 #

compare, compareText

Fork me on GitHub