我在我的javascript代码中使用以下功能
function AlphaSort(sort_type,cat_1,cat_2,cat_nm)
{
var len = dataref.totalrow;
var arr_name = new Array();
for (var i =0; i<len; i++)
{
var t = eval('dataref.mf_scheme['+i+'].'+sort_type);
arr_name[i] = t;
}
arr_name.sort();
if(sort_type!='scheme_name')
{
arr_name.reverse();
}
var j=0;
for (var i =0; i<arr_name.length; i++)
{
var sort_key = arr_name[i];
for (j=i; j < arr_name.length; j++)
{
var next_sort_key = eval('dataref.mf_scheme['+j+'].'+sort_type);
next_sort_key = next_sort_key;
if (sort_key == next_sort_key)
{
break;
}
}
if (i != j)
{
var temp = eval('dataref.mf_scheme['+i+']');
eval('dataref.mf_scheme['+i+'] = dataref.mf_scheme['+j+']');
eval('dataref.mf_scheme['+j+'] = temp' );
}
}
var s = '';
for (var i =0; i<len; i++)
{
s += eval('dataref.mf_scheme['+i+'].'+sort_type)+',';
}
if((cat_1 != '') && (cat_2 != '') && (cat_nm != ''))
{
showUser(cat_1,cat_2,cat_nm);
}
else
{
showUser('1','1','all');
}
}
其中showUser仅打印结果数组
function showUser(cats1,cats2,nam_cat)
{
if((nam_cat=='all') && (cats1 !=1) && (cats2 !=1))
{
document.getElementById("all").style.display='';
document.getElementById("eq").style.display='none';
}
else
{
var len = dataref.totalrow;
var sc_nms = '';
for (var i =0; i<len; i++)
{
var scm_id = eval('dataref.mf_scheme['+i+'].cat_id');
var scm_mnths='';
if((scm_id==cats1) || (scm_id==cats2) || (cats1==1) || (cats2==1))
{
var scm_name = eval('dataref.mf_scheme['+i+'].scheme_name');
var scm_1mnth = eval('dataref.mf_scheme['+i+'].scheme_1_month');
var arrs=new Array(scm_1mnth,scm_3mnth,scm_6mnth,scm_1yr,scm_3yr,scm_5yr,incept,navss);
for (var j =0; j<arrs.length; j++)
{
var vals=arrs[j];
scm_mnths +='<TD class="c3">'+vals+'</TD>';
}
sc_nms +='<TR class="ln hv"><TD class="l">'+scm_name+'</td>'+scm_mnths+'</tr>';
}
}
document.getElementById("eq").style.display='';
document.getElementById('eq').innerHTML = '<TABLE cellpadding="3" class="b bc r w4">'+sc_nms+'</Table>';
document.getElementById("all").style.display='none';
}
}
这里是arr_name.sort();正在排序函数,但我的输出不正确
它给出的输出是这样的:
90.45
9.90
81.89
49.67
43.59
202.99
18.10
165.46
111.17
这是错误的。它是基于第一个整数排序而不是整数。
正确的输出是: -
202.99
165.46
111.17
90.45
81.89
49.67
43.59
18.10
9.90
我应该使用什么功能以及现有代码有什么问题?????
编辑:
all Schemes 1 mth 3 mth 6 mth 1 yr 3 yr 5 yr
ICICI -4.62 6.68 43.05 80.82 5.84 24.26
Prudential 6.68 345.89 234.76 21.89 -10.23 9.90
这是我的数组对象中的数据。现在我希望如果用户点击1个月,那么整个数据应该排序1个月,如果用户点击3年,那么整个数据应该根据等等。 现在记住我的代码出错的地方?????
答案 0 :(得分:3)
实际上你的排序方法是在词法上对值进行排序。使用callbackFunction以数字方式对其进行排序 以下代码将按您的预期对数组进行排序。
arr_name.sort( callbackFunc ); // use callbackFunc wherever you are sorting
function callbackFunc(a, b){
return parseFloat(a) - parseFloat(b);
}
答案 1 :(得分:1)
这些数字还是字符串?将它们转换为数字。