Javascript 当条目为>;=10

Javascript 当条目为>;=10,javascript,arrays,sorting,quicksort,Javascript,Arrays,Sorting,Quicksort,我有一个表,我想按一个字段对它进行排序。但是,我需要携带另一个字段,它将提供交换表条目所需的数据。它可以工作,但是当我们排序的字段的值为10时(可能这对于条目>=10是个问题),它会将10解释为1,从而对数据集10 8 5 9到9 8 5 10的结果进行排序。 我搞不懂发生了什么事!你能吗?:) 解决方案(通过Vache) 问题是要排序的数组项是字符串而不是整数!我用jQuery和.text()收集数组的条目。此外,我需要使用parseInt()将字符串转换为整数 /** * Will sw

我有一个表,我想按一个字段对它进行排序。但是,我需要携带另一个字段,它将提供交换表条目所需的数据。它可以工作,但是当我们排序的字段的值为10时(可能这对于条目>=10是个问题),它会将10解释为1,从而对数据集10 8 5 9到9 8 5 10的结果进行排序。 我搞不懂发生了什么事!你能吗?:)

解决方案(通过Vache) 问题是要排序的数组项是字符串而不是整数!我用jQuery和.text()收集数组的条目。此外,我需要使用parseInt()将字符串转换为整数

/** 
 * Will swap two table entries 
 * @param a - name of first player
 * @param b - name of second player
 */
function swapEntries(a, b)
{
    var editor = $("#" + a);  //put your ids here
        var viewer = $("#" + b);

    editorContent = editor.clone();
        viewerContent = viewer.clone();

    editor.replaceWith(viewerContent);
        viewer.replaceWith(editorContent);
}

/** 
 * Will swap two array cells
 * @param ar - array
 * @param a - first cell's index
 * @param b - second cell's index
 */
function swap(ar, a, b)
{
    var temp = ar[a];
    ar[a] = ar[b];
    ar[b] = temp;
}

/**
 * Quicksort.
 * @param a - The array to be sorted.
 * @param first - The start of the sequence to be sorted.
 * @param last - The end of the sequence to be sorted.
 * @param names - Array of names.
 */
function quickSort( a, first, last, names ) 
{
    var pivotElement;
    if(first < last)
    {
        pivotElement = pivot(a, first, last, names);
        quickSort(a, first, pivotElement-1, names);
        quickSort(a, pivotElement+1, last, names);
    }
}



/**
 * Find and return the index of pivot element.
 * @param a - The array.
 * @param first - The start of the sequence.
 * @param last - The end of the sequence.
 * @param names - Array of names.
 * @return - the pivot element.
 */
function  pivot( a, first, last) 
{
    var p = first;
    var pivotElement = a[first];

    for(var  i = first+1 ; i <= last ; i++)
    {
        if(a[i] > pivotElement)
        {
            p++;
            swap(a, i, p);
         swapEntries(names[i], names[p]);
         swap(names, i, p);
        }
    }

    swap(a, p, first);
    swapEntries(names[p], names[first]);
    swap(names, p, first);

    return p;
}
/**
*将交换两个表项
*@param a-第一个玩家的名字
*@param b-第二名玩家的名字
*/
功能交换(a、b)
{
var editor=$(“#”+a);//将您的ID放在这里
变量查看器=$(“#”+b);
editorContent=editor.clone();
viewerContent=viewer.clone();
editor.replacetwith(viewerContent);
查看器.replaceWith(编辑器内容);
}
/** 
*将交换两个阵列单元
*@param ar-数组
*@param a-第一个单元格的索引
*@param b-第二个单元格的索引
*/
功能交换(ar、a、b)
{
var-temp=ar[a];
ar[a]=ar[b];
ar[b]=温度;
}
/**
*快速排序。
*@param a-要排序的数组。
*@param first-要排序的序列的开头。
*@param last-要排序的序列的结尾。
*@param names-名称数组。
*/
函数快速排序(a、第一个、最后一个、名称)
{
var数据透视元素;
如果(第一次<最后一次)
{
pivotElement=pivot(一个、第一个、最后一个、名称);
快速排序(a,第一个,pivotElement-1,名称);
快速排序(a,pivotElement+1,last,name);
}
}
/**
*查找并返回pivot元素的索引。
*@param a-数组。
*@param first-序列的开始。
*@param last-序列的结尾。
*@param names-名称数组。
*@return-枢轴元素。
*/
功能轴(a、第一个、最后一个)
{
var p=第一;
var pivotElement=a[第一];
对于(变量i=第一个+1;i数据透视元素)
{
p++;
互换(a、i、p);
swapEntries(名称[i],名称[p]);
掉期(名称、i、p);
}
}
互换(a、p、第一);
交换货币(名称[p],名称[first]);
交换(名称,p,第一);
返回p;
}

如果看不到数组,您的问题可能是您的数字实际上是字符串

通过JavaScript处理排序的方式

>>> "10" > "2"
false
>>> 10 > 2
true
还值得注意的是,只要一个操作数是数字,就会进行转换以进行数字比较。所以

>>> "10" > 2
true
>>> 10 > "2"
true

包括初始化数组的代码。我感觉要排序的数组中充满了字符串而不是整数。如果可以的话,创建一个提琴…有没有特别的原因不使用内置的排序函数?浏览器可能已经使用了quicksort或它的一些变体,并且具有作为本机调用而不是Javascript实现的优点,并且应该比自己做的更快。如果需要,也可以提供自定义比较函数。字符串是问题所在。我不知道有任何内置类型。:)