Javascript 当条目为>;=10
我有一个表,我想按一个字段对它进行排序。但是,我需要携带另一个字段,它将提供交换表条目所需的数据。它可以工作,但是当我们排序的字段的值为10时(可能这对于条目>=10是个问题),它会将10解释为1,从而对数据集10 8 5 9到9 8 5 10的结果进行排序。 我搞不懂发生了什么事!你能吗?:) 解决方案(通过Vache) 问题是要排序的数组项是字符串而不是整数!我用jQuery和.text()收集数组的条目。此外,我需要使用parseInt()将字符串转换为整数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
/**
* 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实现的优点,并且应该比自己做的更快。如果需要,也可以提供自定义比较函数。字符串是问题所在。我不知道有任何内置类型。:)