在Javascript中比较string的最佳方法?
我正在尝试优化一个函数,在JavaScript中进行string的二进制search。
二进制search要求您知道密钥是否是数据透视表或数据透视表。
但是这需要在Javascript中进行两个string比较,而不像C
语言那样, strcmp()
函数为(小于,等于,大于)返回三个值(-1,0,+1)。
在JavaScript中是否有这样一个本地函数,它可以返回一个三元值,这样在二进制search的每次迭代中只需要一次比较就可以了?
你可以使用localeCompare()
方法。
string_a.localeCompare(string_b); /* Expected Returns: 0: exact match -1: string_a < string_b 1: string_a > string_b */
进一步阅读:
- 堆栈溢出 – 是否有一个JavaScript strcmp()?
- 教程点 – Javascript的string – localeCompare()方法
那么在JavaScript中,你可以检查两个string的值相同的整数,所以你可以做到这一点:
-
"A" < "B"
-
"A" == "B"
-
"A" > "B"
因此,您可以使自己的函数检查string的方式与strcmp()
。
所以这将是同样的function:
function strcmp(a, b) { return (a<b?-1:(a>b?1:0)); }
您可以使用比较运算符来比较string 。 一个strcmp
函数可以这样定义:
function strcmp(a, b) { if (a.toString() < b.toString()) return -1; if (a.toString() > b.toString()) return 1; return 0; }
编辑这里是一个string比较函数,它至多需要min {length( a ),length( b )}来比较两个string如何相互关联:
function strcmp(a, b) { a = a.toString(), b = b.toString(); for (var i=0,n=Math.max(a.length, b.length); i<n && a.charAt(i) === b.charAt(i); ++i); if (i === n) return 0; return a.charAt(i) > b.charAt(i) ? -1 : 1; }