这是来自节点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
选项似乎是我的节点设置中的无操作。
有没有办法让节点在这种情况下表现得更好,或解释为什么它不会?
答案 0 :(得分:1)
这是迄今为止我发现的最佳答案:https://github.com/joyent/node/issues/7676
TL; DR v8完全不支持localeCompare,但chrome使用v8-i18n来支持这一点。 Node正在研究如何将完全支持纳入Node。