关于JS中的sort()数组数字顺序乱序问题以及扩展

原创
小哥 3年前 (2022-11-16) 阅读数 7 #大杂烩

sort排序问题

首先, 我们定义了number 数组, 里面装了15个数, 但我们接受了 reverse 后再sort 发现的顺序不是我们想象的那样。 从1~15

Tips : sortNumber.sort 之后,它会改变自己。

      let sortNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
      console.log(sortNumbers.reverse().sort();


虽然表面上看起来秩序很混乱, 事实上,这也是正常的, 先是 ‘1’开头 然后是‘2’开头 。所以 sort当对阵列进行排序时, 默认情况下,这些元素作为字符串相互比较。
但是 如果我们真的想比较数组中的数字怎么办?
这时 需要我们加入sort将您自己的自定义添加到功能中:

      let sortNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
      console.log(sortNumbers.reverse().sort((a, b) => a - b)); // 倒车档正在下降

在b>a时, 返回负数, 相反,返回正数。 相等时返回0。所以 sort该函数将根据这些返回值对数组进行排序。

当然,我们也可以自定义某个属性的排序。

就是在 sort ()添加自己编写的函数

      const friends = [
        {name: jason, age: 30},
        {name: timmy, age: 20},
        {name: robert, age: 10}, // ES2017 允许结尾使用逗号
      ];
      function comparePerson(a, b){
        if (a.age < b.age){
          return -1;
        }
        if(a.age > b.age){
          return 1;
        }
        return 0;
      }
      console.log(friends.sort(comparePerson));  // 注意这个 调用func 是不加 () 的

所以 这种类型非常自由, 你可以写任何你比较的方法。

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除