使用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;
    }