localeCampare()方法与操作字符串有关的最后一个方法是localeCompare(),这个方法比较两个字符串,并返回下列值中的一个:
◎如果字符串在字母表中应该排在字符串参数之前,则返回一个负数(大多数情况下是一1,具体的值要视实现而定);
◎如果字符串等于字符串参数,则返回0;
◎如果字符串在字母表中应该排在字符串参数之后,则返回一个正数(大多数情况下是l,具体的值同样要视实现而定)。
以下是几个侧子:
var stringValue= "yellow";
alert(stringValue .localeCompare(”brick“)); //1
alert( stringValue.localeCompare(”yellow”)); //0
alert(stringValue .localeCompare(”zoo“)); //-1
这个例子比较了字符串”yellow”和另外几个值:”brick u、”yellow”和“zoo”。因为”brick'在字母表中排在“yellow”之前,所以localeCompare()返回了1;而”yellow”等于nyellow”,所以localeCompare()返回了o;最后,”zoo”在字母表中排在“yellow”后面,所以localeCompare()运回了一1。再强调一次,因为lcaleCompare()返回的数值取决于实现,所以最好是像下面例子所示的这样使用这个方法:
//使用localeCompare()的建议方式
function determineOrder (value) {
var result=stringValue.localeCompare (valuey;
if (result alert("The string 'yellow' comes before thd、string'"+value+"'"); } else if (result>0) { alert("The string 'yallow' comes after the string'"+Value+"'."); }else alert("The string 'yellow' is equal to the string'"+value+"'."); alert("The string'yellow'is equal to the strlng'"+value"',"); }
}
determineOrder( "brick");
determineOrder( "yellow");
determineOrder(“ZOO");
使用这种结构,就可以确保自己的代码在任何实现中都可以正确地运行了。
localeCompare()方法比较与众不同的地方,就是实现所支持的地区(国家和语言)决定了这个方法的行为。比如,美国以英语作为ECMAScript实现的标准语言,因此localeCompare()就是区分大小写的,于是大写字母在字母表中排在小写字母前头就成为了一顼决定性的比较规则。不过,在其他地区恐怕就不是这种情况了。