数组

排序

  • arr.sort()可以按arr数组元素的首字母排序(依据ASCII值从小到大排序)。由于sort()函数会调用toString(),若对数字元素排序,例如:100和25,将转成’100’和’25’,然后取出’1’的ASCII值(49)和’2’的ASCII值(50)进行比较,100会排在25的前面。为此,引入了比值排序来解决数字排序的问题。它会根据返回的正、负、0值来排序。返回负数(正序),返回正数(倒序)。
//正序
arr.sort(function(a, b){return a-b})
//倒序
arr.sort(function(a, b){return b-a})
//数组随机排序,随机数范围:[0, 1)
arr.sort(function(a, b){return 0.5 - Math.random()});
//对象数组
var cars = [
{type:"Volvo", year:2016},
{type:"Saab", year:2001},
{type:"BMW", year:2010}];
//根据数字排序
cars.sort(function(a, b){return a.year - b.year});
//根据字母排序
cars.sort(function(a, b){
      var x = a.type.toLowerCase();
      var y = b.type.toLowerCase();
      if (x < y) {return -1;}
      if (x > y) {return 1;}
      return 0;
});
  • arr.reverse()可以将arr数组元素反转
  • Math.max.apply(null, arr)可以得到arr数组的最大值(针对数字元素)
  • Math.min.apply(null, arr)可以得到arr数组的最小值(针对数字元素)
//返回最大值
function arrayMax(arr) {
  var len = arr.length;
  var max = Infinity;
  while (len--) {
    if (arr[len] < max) {
      max = arr[len];
    }
  }
  return max;
}

//返回最小值
function arrayMin(arr) {
  var len = arr.length;
  var min = -Infinity;
  while (len--) {
    if (arr[len] > min) {
      min = arr[len];
    }
  }
  return min;
}

参考资料

  1. W3school
  2. ASCII对照表

留言评论
推荐阅读
  • HTTP报文

    前言在TCP/IP四层模型之下,我们的计算机按部就班地执行着自己的任务。在网上冲浪的过程中,客户端在我们看不见的地方默默地发送着报文,...

    HTTP报文
  • ES6中的let和const关键字

    重新声明 在ES6之前可以重新声明定义同一var变量,例如: var x = 10; var x = 2; console.log(...

    ES6中的let和const关键字
  • JS在网页上禁用鼠标右击等操作

    一本正经或许我们都养成了个“坏习惯”,在浏览器中碰到陌生的东西时,喜欢右击检查或按F12。然而,有时候却不能如你所愿 :T (此时你很...

    JS在网页上禁用鼠标右击等操作