7、数组排序
(1)数组.sort()
数组排序(可以实现由大到小,默认:由小到大排序只限10以内),原有的数组也改变。
默认:按照首个字符的Unicode编码排序;如果第一个相同那么就比较第二个...
参数:无或有或函数
返回值: 排序后的新数组 原有数组改变
var arr = [4,5,1,3,2,7,6];
var aaa =arr.sort();
console.log(aaa); // [1, 2, 3, 4, 5, 6, 7]
console.log(aaa === arr); // true 原数组被排序了(冒泡排序)
//默认还可以排列字母;
var arr2 = ["c","e","d","a","b"];
var bbb = arr2.sort();
console.log(bbb); // ["a", "b", "c", "d", "e"]
console.log(bbb===arr2); // true 原数组被排序了(冒泡排序)
10以上的排序
return a-b
}); 从小到大,10以上
return b-a
}); 从大到小,10以上
var ary = [9, 2, 13, 24, 5, 26, 37];
var res = ary.sort(); //这样直接写,只能处理10以内的数组排序
var res = ary.sort(function (a, b) { // 处理10以上的数组排序
//a代表每一次循环的时候的当前项,b是后面的这个项。
//return a-b 当前项减去后一项,如果大于0,代表前面的比后面的大,这样就交换位置。这种机制叫作冒泡排序。
return a - b; //小-->大排序
return b - a; //大-->小排序
});
sort( )底层原理
var aaa = bubbleSort([1,12,3], function (a,b) {
// return a-b; //实参:array[j]-array[j+1];
return b-a; //实参:array[j+1]-array[j];
});
console.log(aaa);
function bubbleSort(array,fn){
//外循环控制轮数,内循环控制次数,都是元素个数-1;
for(var i=0;i<array.length-1;i++){
for(var j=0;j<array.length-1-i;j++){//次数优化,多比较一轮,少比较一次;
//满足条件交换位置;
// if(array[j]>array[j+1]){ //大于升幂排序;否则降幂;
//a-b>0 和 a>b是一个意思;
//b-a>0 和 a<b是一个意思;
// if(array[j]-array[j+1]>0){//升幂排序
// if(array[j+1]-array[j]>0){//降幂排序
//把两个变量送到一个函数中;
if(fn(array[j],array[j+1])>0){
var temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
//返回数组
return array;
}
(2)数组.reverse()
将数组倒过来排列(把原有数组的顺序倒过来),原有数组改变,返回数组地址
参数:无
返回值: 数组地址 原有数组改变
var ary=[1,2,3];
var res = ary.reverse()
console.log(res,ary); //res=>[3,2,1] ary=>[3,2,1]
本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记。有不正确之处请各位高手多多指点,一起学习进步。【VX:czlingyun 暗号:CSDN】