使用Javascript数组sort()方法和比较函数进行字母搜索
下面是使用使用Javascript数组sort()方法和比较函数进行字母搜索,javascript,Javascript,下面是使用sort()方法进行的反向字母搜索 请注意,compareFunction是如中所述提供的 这是如何导致排序反转并变成字母顺序的?我认为这实现了字母搜索,因为我们只是将这种逻辑与条件交换: -如果compareFunction(a,b)返回的值小于0,则将a排序到低于b的索引(即a排在第一位) -如果compareFunction(a,b)返回的值大于0,则将b排序为低于a的索引(即b排在第一位) 我的问题是,如果。。。其他条件。。。这是如何导致排序反转并变成字母顺序的 因为在第一个
sort()
方法进行的反向字母搜索
请注意,compareFunction
是如中所述提供的
这是如何导致排序反转并变成字母顺序的?我认为这实现了字母搜索,因为我们只是将这种逻辑与条件交换:
-如果compareFunction(a,b)
返回的值小于0,则将a
排序到低于b
的索引(即a
排在第一位)
-如果compareFunction(a,b)
返回的值大于0,则将b
排序为低于a
的索引(即b
排在第一位)
我的问题是,如果。。。其他条件。。。这是如何导致排序反转并变成字母顺序的
因为在第一个街区你要返回:
- 如果a==b,则为0
- 1如果a
- -1如果a>b
- 如果a==b,则为0
- -1如果a
- 1如果a>b
sort
函数的内容,即a
和b
之间的关系。回调函数的返回值告诉sort
函数这些元素如何相互关联:如果返回-1,则表示排序结果中a
应该在b
之前。如果返回1,则表示排序结果中a
应在b
之后
如果您想更改这些返回语句的顺序而不更改排序
函数所做的操作,您还必须将else If(a
更改为else If(a>b)
,以便返回相同的信息
我的问题是,如果。。。其他条件。。。这是如何导致排序反转并变成字母顺序的
因为在第一个街区你要返回:
- 如果a==b,则为0
- 1如果a
- -1如果a>b
- 如果a==b,则为0
- -1如果a
- 1如果a>b
sort
函数的内容,即a
和b
之间的关系。回调函数的返回值告诉sort
函数这些元素如何相互关联:如果返回-1,则表示排序结果中a
应该在b
之前。如果返回1,则表示排序结果中a
应在b
之后
如果您想更改这些返回语句的顺序而不更改
排序
函数所做的操作,您还必须将else If(a
更改为else If(a>b)
,以便返回相同的信息。顺便说一句,在return
之后,您不需要else
,像if()返回;如果()返回代码>。我怀疑你这样做是为了练习,但是FWIW,当比较这样的字符串时,你可以使用localeCompare
:。排序((a,b)=>a.localeCompare(b))
是字母升序,。排序((a,b)=>b.localeCompare(a))
(或。排序((a,b)=>-a.localeCompare(b))
return
之后,不需要else
,比如if()return;如果()返回代码>。我怀疑你这样做是为了练习,但是FWIW,当比较这样的字符串时,你可以使用localeCompare
:。排序((a,b)=>a.localeCompare(b))
是阿尔法升序,。排序((a,b)=>b.localeCompare(a))
(或。排序((a,b)=>-a.localeCompare(b))
function reverseAlpha(arr) {
return arr.sort(function(a, b) {
console.log('a:' + a);
console.log('b:' + b);
if (a === b) {
return 0;
} else if (a < b) {
return 1;
} else {
return -1;
}
});
}
console.log(reverseAlpha(['l', 'h', 'z', 'b', 's'])); // Returns ['z', 's', 'l', 'h', 'b']
function alphaSort(arr) {
return arr.sort(function(a, b) {
console.log('a:' + a);
console.log('b:' + b);
if (a === b) {
return 0;
} else if (a < b) {
return -1;
} else {
return 1;
}
});
}
console.log(alphaSort(['l', 'h', 'z', 'b', 's'])); // Returns ['b', 'h', 'l', 's', 'z']
else if (a < b) {
return -1;
} else {
return 1;
}