我让这个JScript文件进行自然比较排序,不知怎的,这个问题一直在发生:
通过获取文件夹中的所有文件来创建数组,然后我想对其进行排序。对于某些(随机?)文件,第一次比较工作,第二次变量的类型在unknown
之后变为.toUpperCase()
。
我的代码:
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(_, $1, $2) { ax.push([$1 || Infinity, $2 || ""]) });
b.replace(/(\d+)|(\D+)/g, function(_, $1, $2) { bx.push([$1 || Infinity, $2 || ""]) });
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;
}
我复制了这个(dunno在哪里)。通常它起作用,这只是刚才发生的。
是的,unknown
,而不是undefined
。
答案 0 :(得分:0)
所以,似乎是一些带有一些文件名的东西,它只发生在这个特定的文件夹中,该文件夹包含来自html的名称可能是问题的文件。
无论如何,感谢所有的帮助,我只会让那几个文件成为。