使用Javascript数组sort()方法和比较函数的字母搜索

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Javascript数组sort()方法和比较函数的字母搜索相关的知识,希望对你有一定的参考价值。

这里是使用sort()方法的反向字母搜索

注意,如compareFunction所述提供了MDN

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

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']

我的问题是,只需将return else if...条件的最后两个else值交换为:

else if (a < b) {
      return -1;
    } else {
      return 1;
    }

这如何导致排序反转并变成字母?我认为这可以实现字母搜索,因为我们只是将这种逻辑与条件交换:

-如果compareFunction(a, b)返回的值小于0,则将a排序为小于b的索引(即a在前)]

-如果compareFunction(a, b)返回大于0,则将b排序为小于a的索引(即b在前)。

答案

我的问题是,如果... else条件,只需交换else的最后两个返回值...这如何导致排序反转并变成字母?

以上是关于使用Javascript数组sort()方法和比较函数的字母搜索的主要内容,如果未能解决你的问题,请参考以下文章

你真的会用JavaScript中的sort方法吗

JavaScript数组sort()方法小结

javascript sort方法和比较函数

javascript sort()对数组中的元素进行排序

JavaScript中数组Array.sort()排序方法详解

js 一/二维数组排序