使用jQuery对alphanum数组进行排序

时间:2013-04-24 05:09:18

标签: javascript jquery sorting

我正在尝试使用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)分配给变量,然后减去新的变量。

0 个答案:

没有答案