Microsoft JScript toUpperCase returns 类型未知
Microsoft JScript toUpperCase returns type unknown
我让这个 JScript 文件执行自然比较排序,但不知何故这个问题不断出现:
通过获取文件夹中的所有文件创建数组,然后我想对它进行排序。对于某些(随机?)文件,第一次比较有效,第二次变量的类型在 .toUpperCase()
.
之后变为 unknown
我的代码:
function naturalCompare(a, b) {
var ax = [], bx = [];
a.toString();
b.toString();
a = a + "";
b = b + "";
a = a.toUpperCase();
b = b.toUpperCase();
a.replace(/(\d+)|(\D+)/g, function(_, , ) { ax.push([ || Infinity, || ""]) });
b.replace(/(\d+)|(\D+)/g, function(_, , ) { bx.push([ || Infinity, || ""]) });
while(ax.length && bx.length) {
var an = ax.shift();
var bn = bx.shift();
var nn = (an[0] - bn[0]) || an[1].localeCompare(bn[1]);
if(nn) return nn;
}
return ax.length - bx.length;
}
我复制了这个(不知道在哪里了)。正常情况下是可以的,最近才出现这种情况
是的,unknown
,不是 undefined
。
所以,似乎有一些文件名,它只发生在这个特定的文件夹中,其中包含名称来自 html 的文件,这可能是问题所在。
总之,谢谢大家的帮助,那几个文件我就放着吧
我让这个 JScript 文件执行自然比较排序,但不知何故这个问题不断出现:
通过获取文件夹中的所有文件创建数组,然后我想对它进行排序。对于某些(随机?)文件,第一次比较有效,第二次变量的类型在 .toUpperCase()
.
unknown
我的代码:
function naturalCompare(a, b) {
var ax = [], bx = [];
a.toString();
b.toString();
a = a + "";
b = b + "";
a = a.toUpperCase();
b = b.toUpperCase();
a.replace(/(\d+)|(\D+)/g, function(_, , ) { ax.push([ || Infinity, || ""]) });
b.replace(/(\d+)|(\D+)/g, function(_, , ) { bx.push([ || Infinity, || ""]) });
while(ax.length && bx.length) {
var an = ax.shift();
var bn = bx.shift();
var nn = (an[0] - bn[0]) || an[1].localeCompare(bn[1]);
if(nn) return nn;
}
return ax.length - bx.length;
}
我复制了这个(不知道在哪里了)。正常情况下是可以的,最近才出现这种情况
是的,unknown
,不是 undefined
。
所以,似乎有一些文件名,它只发生在这个特定的文件夹中,其中包含名称来自 html 的文件,这可能是问题所在。
总之,谢谢大家的帮助,那几个文件我就放着吧