1

我正在尝试使用 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 编码的新手。可能存在一些语法错误。我真的不想要任何关于算法的帮助,只是语法。

jsfiddle-checkout 我的代码在这里

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) 分别分配给变量,然后减去新变量。

4

0 回答 0