在JavaScript中比较字符串的最佳方法?[重复]

2020/09/28 07:41 · javascript ·  · 0评论

我正在尝试优化在JavaScript中对字符串进行二进制搜索的函数。

二进制搜索要求您知道键是==枢轴还是<枢轴。

但这需要JavaScript中的两个字符串比较,这与同类C语言不同,后者具有strcmp()返回三个值(-1, 0, +1)(小于,等于,大于)函数

JavaScript中是否有这样的本机函数可以返回三进制值,以便在二进制搜索的每次迭代中只需要一个比较?

您可以使用该localeCompare()方法。

string_a.localeCompare(string_b);

/* Expected Returns:

 0:  exact match

-1:  string_a < string_b

 1:  string_a > string_b

 */

进一步阅读:

在JavaScript中,您可以检查两个字符串以获取与整数相同的值,因此您可以执行以下操作:

  • "A" < "B"
  • "A" == "B"
  • "A" > "B"

因此,您可以创建自己的函数,以与相同的方式检查字符串strcmp()

因此,这将是执行相同功能的函数:

function strcmp(a, b)
{   
    return (a<b?-1:(a>b?1:0));  
}

您可以使用比较运算符比较字符串strcmp可以这样定义一个函数:

function strcmp(a, b) {
    if (a.toString() < b.toString()) return -1;
    if (a.toString() > b.toString()) return 1;
    return 0;
}

编辑     这是一个字符串比较函数,最多进行min {length(a),length(b)}个比较,以告诉两个字符串如何相互关联:

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;
}
本文地址:http://javascript.askforanswer.com/zaijavascriptzhongbijiaozifuchuandezuijiafangfazhongfu.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!