数组排序.论点从何而来
Array sorting. Where do the arguments come from?
本文关键字:数组排序 更新时间:2023-09-26
在这个排序函数中,参数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]);
}
它们会自动传递吗?
是的。
您正在创建一个匿名比较器函数,sort
函数在需要比较两个对象时调用该函数。
这些会自动传递给您的排序函数。将它们的名称放在匿名函数的参数列表中只是为了方便。您可以通过记录 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
。
排序算法包括两部分 - pick-resort logic和元素比较逻辑。Javascript 运行时库将处理 pick-resort 逻辑(例如快速排序),当它选择两个元素并需要比较结果时,它将调用 array.sort 参数中的函数来获取它。
相关文章:
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- Javascript中的多维数组排序索引问题
- 如何按日期对Javascript对象数组排序
- 数组排序后显示更改
- 当许多元素相等时,Javascript数组排序无法正常工作
- Javascript数组排序速度受字符串长度的影响
- 按唯一键将对象数组排序为数组
- 以 js 为单位的数组排序
- js 数组排序无法正常工作
- 数组排序.论点从何而来
- 不需要的数组排序
- 数组排序不正确/不可预测,使用 indexOf 时
- Javascript将数组排序到树中
- 随后的多维数组排序会产生意外的结果
- 数组排序基于纯javascript搜索文本匹配
- Javascript自定义数组按数组排序
- 使用字符串按属性错误对对象进行数组排序
- 多维数组排序
- JavaScript与PHP在数组排序中的对比
- Javascript-关联数组排序