Javascript 从sort方法调用回调函数时,如何将参数传递给回调函数
从方法调用回调方法时,如何将参数传递给回调方法。我想将“sortOrder”传递给“Compare”,并将其排序为accounting或desecdingJavascript 从sort方法调用回调函数时,如何将参数传递给回调函数,javascript,callback,Javascript,Callback,从方法调用回调方法时,如何将参数传递给回调方法。我想将“sortOrder”传递给“Compare”,并将其排序为accounting或desecding var sortOrder = "asc"; var a = new Array(4, 11, 2, 10, 3, 1); b = a.sort(Compare); // how to pass "sortOrder" here // Sorts array elements in ascending order numerically
var sortOrder = "asc";
var a = new Array(4, 11, 2, 10, 3, 1);
b = a.sort(Compare); // how to pass "sortOrder" here
// Sorts array elements in ascending order numerically.
function Compare(first, second, sortOrder) // here sortOrder require
{
if(sortOrder == "asc"){
if (first == second)
return 0;
if (first < second)
return -1;
else
return 1;
}
else{
if (first == second)
return 0;
if (first < second)
return 1;
else
return -1;
}
}
}
var sortOrder=“asc”;
var a=新数组(4,11,2,10,3,1);
b=a.排序(比较);//这里怎么通过“巫师”
//按升序对数组元素进行数字排序。
函数比较(第一,第二,sortOrder)//这里sortOrder需要
{
如果(排序器==“asc”){
如果(第一个==第二个)
返回0;
如果(第一次<第二次)
返回-1;
其他的
返回1;
}
否则{
如果(第一个==第二个)
返回0;
如果(第一次<第二次)
返回1;
其他的
返回-1;
}
}
}
试试这种方法
替换
b = a.sort(Compare);
与
演示
var sortOrder=“asc”;
var a=新数组(4,11,2,10,3,1);
b=a.sort(函数(a,b){
返回比较(a、b、排序器);
});
document.body.innerHTML+=JSON.stringify(b,0,4);
函数比较(第一,第二,sortOrder)//这里sortOrder需要
{
如果(排序器==“asc”){
如果(第一个==第二个)
返回0;
如果(第一次<第二次)
返回-1;
其他的
返回1;
}
否则{
如果(第一个==第二个)
返回0;
如果(第一次<第二次)
返回1;
其他的
返回-1;
}
}
此解决方案返回所选排序顺序的函数。如果未指定顺序,则使用asc的功能
函数getComparer(排序器){
返回排序器==='desc'?
函数(a,b){返回b-a;}:
函数(a,b){返回a-b;};
}
var a=新数组(4,11,2,10,3,1);
a、 排序(getComparer());
document.write(''+JSON.stringify(a,0,4)+'');
a、 排序(getComparer('desc'));
document.write(''+JSON.stringify(a,0,4)+'')代码>如果代码的唯一用途是您在此处发布的代码,您可以从参数列表中删除sortOrder
,以便您在顶部定义的变量在函数中仍然可见
如果不是,前面的两个答案中的任何一个都是正确的。对于内联匿名函数,总是更喜欢箭头a.sort((p,c)=>compare(p,c))
Nice。但我建议将“compare”函数的名称改为“generateCompare”或类似的名称:),这让我一时糊涂。@RubenSerrate,现在好些了吗?
b = a.sort(function(a,b){
return Compare(a, b, sortOrder);
});