数组
排序
- 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;
}
参考资料
- W3school
- ASCII对照表
评论区