我正在使用一些我改编的代码,有些东西我不太明白最好的方法。我正在尝试使用不同的排序函数来简化一些代码,这些函数将特定值的排序应用于列表项数组。
目前,该函数根据特定因素进行比较,然后返回要排序的值。
我想通过这个数组/排序调用传递两个额外的变量,但我似乎无法找到编写这个的方法。目前,我通过在窗口上使用全局变量以一种讨厌的方式来做这件事,但我宁愿直接传递变量。
根据下面的代码,任何收紧和清理它的方法将不胜感激:
arr = [];
sort_func = $j(this).children(':selected').val();
$j('li.collectionItem').each(function(){
arr.push(this);
});
if (sort_func == "a_z")
{
window.dataType = 'alpha';
window.bigFirst = false;
arr.sort(sort_products);
}
else if (sort_func == "z_a")
{
window.dataType = 'alpha';
window.bigFirst = true;
arr.sort(sort_products);
}
// custom sort functions
function sort_products(a, b)
{
dataType = window.dataType;
bigFirst = window.bigFirst;
var compA = $j(a).data(dataType);
var compB = $j(b).data(dataType);
if (bigFirst == true)
{
return (compA > compB) ? -1 : (compA < compB ) ? 1 : 0;
}
else
{
return (compA < compB) ? -1 : (compA > compB ) ? 1 : 0;
}
}