在这个排序函数中,参数a和b来自何处? 它们会自动通过吗?
dir = "asc"
sortArray = new Array("hello", "Link to Google", "zFile", "aFile");
//sort array
if (dir == "asc") {
sortArray.sort(function(a, b) {
return a.toLowerCase() > b.toLowerCase()
});
} else {
sortArray.sort(function(a, b) {
return b.toLowerCase() > a.toLowerCase()
});
}
for (var i = 0; i < sortArray.length; i++) {
console.log(sortArray[i]);
}
答案 0 :(得分:3)
它们会自动通过吗?
是
您正在创建一个匿名比较器函数,只要需要比较两个对象,sort
函数就会调用它。
答案 1 :(得分:0)
这些会自动传递给您的排序功能。在匿名函数的参数列表中放置它们的名称只是一种方便。您可以通过记录arguments
集合来查看传递给您的函数的所有项目:
sortArray.sort(function() {
console.log( arguments );
});
导致以下日志:
["hello", "Link to Google"] // 0 vs 1
["Link to Google", "zFile"] // 1 vs 2
["zFile", "aFile"] // 2 vs 3
这两个变量将是arguments[0]
和arguments[1]
,代表阵列中应该比较的两个项目。此比较的返回值应为-1
,0
或1
。
答案 2 :(得分:0)
排序算法包括两个部分 - 选择重排逻辑和元素比较逻辑。 Javascript运行时库将处理pick-rearrange逻辑(例如快速排序),当它选择两个元素并需要比较结果时,它将调用array.sort参数中的函数来获取它。