侧边栏壁纸
博主头像
liveJQ博主等级

沒有乐趣,何来开始

  • 累计撰写 145 篇文章
  • 累计创建 60 个标签
  • 累计收到 2 条评论
Web

JavaScript查漏补缺

liveJQ
2020-09-05 / 0 评论 / 0 点赞 / 536 阅读 / 1,043 字 / 正在检测是否收录...
广告 广告

数组

排序

  • 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对照表
0

评论区