nodejs中的localeCompare选项意外结果

时间:2015-06-01 18:30:44

标签: javascript node.js sorting locale

这是来自节点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选项似乎是我的节点设置中的无操作。

有没有办法让节点在这种情况下表现得更好,或解释为什么它不会?

1 个答案:

答案 0 :(得分:1)

这是迄今为止我发现的最佳答案:https://github.com/joyent/node/issues/7676

TL; DR v8完全不支持localeCompare,但chrome使用v8-i18n来支持这一点。 Node正在研究如何将完全支持纳入Node。