Javascript 数组排序。争论从何而来?
在这个排序函数中,参数a和b来自哪里? 它们是自动通过的吗Javascript 数组排序。争论从何而来?,javascript,Javascript,在这个排序函数中,参数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 {
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]);
}
dir=“asc”
sortArray=新数组(“你好”,“链接到谷歌”,“zFile”,“aFile”);
//排序数组
如果(目录==“asc”){
sortArray.sort(函数(a,b){
返回a.toLowerCase()>b.toLowerCase()
});
}否则{
sortArray.sort(函数(a,b){
返回b.toLowerCase()>a.toLowerCase()
});
}
for(var i=0;i
它们是自动通过的吗
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
函数在需要比较两个对象时调用该函数
它们是自动通过的吗
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
函数在需要比较两个对象时调用该函数。这些将自动传递给排序函数。在匿名函数的参数列表中为它们命名只是一种方便。通过记录参数
集合,可以查看传递给函数的所有项:
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
这两个变量是参数[0]
和参数[1]
,表示数组中应该比较的两个项。此比较的返回值应为-1
,0
或1
,这些值将自动传递给排序函数。在匿名函数的参数列表中为它们命名只是一种方便。通过记录参数
集合,可以查看传递给函数的所有项:
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
这两个变量是
参数[0]
和参数[1]
,表示数组中应该比较的两个项。此比较的返回值应为-1
、0
或1
排序算法,包括两部分-拾取重排逻辑和元素比较逻辑。
Javascript运行库将处理拾取重排逻辑(例如快速排序),当它拾取两个元素并需要比较结果时,它将调用array.sort参数中的函数来获取它。排序算法包括两部分-拾取重排逻辑和元素比较逻辑。
Javascript运行时库将处理拾取重排逻辑(例如快速排序),当它拾取两个元素并需要比较结果时,它将调用array.sort参数中的函数来获取它。
a
和b
接受数组中每对元素的值。正如您所知,您的代码是错误的。分拣机应返回-1
或1
,具体取决于A
是否分别小于b
,或者0
是否相等。代码正在执行的操作是返回0
或1
。因此,如果脚本比较X
和Y
,那么它将被告知Y>X
和X==Y
,这是不合逻辑的,因此结果是未定义的。增加?1:-1
返回到每一行的末尾。a
和b
获取数组中每对元素的值。正如您所知,您的代码是错误的。分拣机应返回-1
或1
,具体取决于A
是否分别小于b
,或者0
是否相等。代码正在执行的操作是返回0
或1
。因此,如果脚本比较X
和Y
,那么它将被告知Y>X
和X==Y
,这是不合逻辑的,因此结果是未定义的。增加?1:-1代码>到每个返回
行的末尾。