2013-07-29 25 views
1

我已经写了自定义排序例程(sortArray(a, b))进行排序的阵列,我有。参数提供给一个匿名函数

如果我这样称呼它

a.sort(function (v1, v2) { return sortArray(v1, v2); }); 

一切工作正常。

如果我这样称呼它:

a.sort(sortArray(v1, v2)); 

v1和v2引发错误,为不确定。

有没有办法利用由的.sort()方法传递的参数,而无需创建一个匿名函数初始接收它们,然后将它们传递给一个用户定义的功能?

回答

6

Array.prototype.sort需要函数引用,但您试图调用sortArray并传递该调用的返回值。你应该传递一个参考给你的函数:

a.sort(sortArray); 

由于sortArray已经需要两个参数,它应该只是工作,v1v2会被自动传递。

+0

什么明确的回应!它想要一个函数引用绝对打开灯! 顺便说一句,它返回一个数字,排序在acordance与返回数字的符号来完成。 –

+0

很高兴帮助,@BrianWren!你是对的,比较函数应该返回一个数字,我忘记了。 – bfavaretto