我正在尝试使用 jquery 比较包含字母和数字的两个数组,但对该函数的调用什么也不做。
jQuery.compare = function (string2,string1) {
alert("comparing")
var i, j;
for ( i = 0, j=0; i < string2.length|| j<string1.length; ++i,++j) {
var n1 = 0,n2=0;
if ($.isNumeric(string2[i+1])) {
num=string2[i]
while ($.isNumeric(string2[i+1])) {
i++;
num += string2[i]
}
n1 = 1;
}
if ($.isNumeric(strin1[j])) {
num1 = string1[j]
while ($.isNumeric(string1[j+1])) {
j++;
num1 += string1[j]
}
n2 = 1;
}
if (n1 == 1) {
if (n2 = 1) {
if( parseInt(num1) - parseInt(num) !=0)
return parseInt(num1) - parseInt(num);
}
else
return 1;
}
else if (n2 = 1)
return -1;
else {
if(string2[i]-string1[j]!=0)
return string2[i]-string1[j]!=0;
}
}
if (j < string1.length)
return -1;
else
return 1;
}
我也想知道调用这个函数的最好方法。我想使用类似 string1.compare(string2) 的东西,并在上面的代码片段中将 string1 替换为 'this'。
编辑:这就是我调用比较函数的方式。这里,colValues 是一个字符串数组。
$.fn.sort = function (colValues) {
alert("sorting")
var i;
for (i = 0; i < colValues.length; ++i) {
for (var j = 0; j < i - 1; ++j) {
alert("before compare")
if(colValues.compare(colValues[j],colValues[j + 1])) {
var temp = colValues[j];
colValues[j] = colValues[j + 1];
colValues[j + 1] = temp;
}
}
}
return colValues
}
如果我更换
if(colValues.compare(colValues[j],colValues[j + 1]))
和
if(colValues[j]>colValues[j+1])
我的排序功能有效。
我是 jquery 编码的新手。可能存在一些语法错误。我真的不想要任何关于算法的帮助,只是语法。
EDIT2:我将所有内容都修复为元数据。这是我必须改变的
1)
jQuery.compare
至
$.fn.compare
2)
if($.isNumeric(string2[i+1]))
至
if(jQuery.isNumeric(string2[i + 1]))
不知何故
while ($.isNumeric(string1[j+1]))
语法没有任何变化
3)
parseInt(num1) - parseInt(num)
也没有工作,因为它返回了 NaN。为了解决这个问题,我定义了两个 var 变量“number1”和“number2”,并用 0 初始化它们,并将 parseInt(num1) 分别分配给变量,然后减去新变量。