localeCompare选项在nodejs的意外结果

localeCompare options in nodejs unexpected result

本文关键字:意外 结果 nodejs 选项 localeCompare      更新时间:2023-09-26

这是来自一个节点cli会话:

> var a = 'foo12';
undefined
> var b = 'foo3';
undefined
> var s = [a , b];
undefined
> s.sort(function(a, b) {
... return a.localeCompare(b, 'en', { numeric: true });
... });
[ 'foo12', 'foo3' ]

这是来自Chrome控制台:

var a = 'foo12';
undefined
var b = 'foo3';
undefined
var s = [a,b]
undefined
s.sort(function(a,b) {return a.localeCompare(b, 'en', {numeric:true});})
["foo3", "foo12"]

。在我的节点设置中,自然排序的numeric: true选项似乎是无操作的。

是否有一种方法可以让节点在这种情况下表现得更好,或者解释为什么它没有?

这是目前为止我发现的最好的答案:https://github.com/joyent/node/issues/7676

TL;DR v8并不完全支持localeCompare,但是chrome使用v8-i18n来支持这一点。Node正在研究如何将完整的支持整合到Node中。