我正在尝试使用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'。
编辑: 这就是我调用compare函数的方法。在这里,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编码的完全新手。可能存在一些语法错误。我真的不希望算法的任何帮助只是语法。
jsfiddle-checkout my code here
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's初始化它们,并分别将parseInt(num1)分配给变量,然后减去新的变量。