Javascript 从sort方法调用回调函数时,如何将参数传递给回调函数

Javascript 从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

从方法调用回调方法时,如何将参数传递给回调方法。我想将“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.
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);
});