js几种数组排序及sort的实现
生活随笔
收集整理的這篇文章主要介紹了
js几种数组排序及sort的实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給出以下數組,并進行排序處理
var arr = new Array('1','3','8','2','3','5');
1、 插入法排序
Array.prototype.csSort = function() {
var newarr = this;
/** 1、 插入法排序
* 插入發排序,即那數組的后邊一項和前面一項對比,如果后面一項小于前面
* 一項,則將兩者位置互換,從數組第2個元素開始對比;如下示例
*/
for (let i = 1; i < newarr.length; i++) {
for (let j = i; j > 0; j--) {
if (newarr[j] < newarr[j-1]) {
let pre = newarr[j];
newarr[j] = newarr[j-1];
newarr[j-1] = pre;
};
};
};
return newarr;
}
console.log(arr.csSort().toString());
2、 冒泡法排序
Array.prototype.csSort = function() {
var newarr = this;
/** 2、 冒泡法排序
* 插入發排序,即那數組的前一項和后一項對比,如果前面一項小于后面
* 一項,則將兩者位置互換,從數組第1個元素開始對比;如下示例
*/
for (let i = 0; i < newarr.length; i++) {
for (let j = 0; j < newarr.length; j++) {
if (newarr[j] > newarr[j+1]) {
let pre = newarr[j];
newarr[j] = newarr[j+1];
newarr[j+1] = pre;
};
};
};
return newarr;
}
console.log(arr.csSort().toString());
sort排序的實現原理
js中sort排序方法使用簡單,用于對數組排序,并返回數組,使用方法也很簡單
Array.sort()
可以看出sort是一個方法,該方法內部對該數組對象進行一些操作,又返回來一個數組,不傳參數的話排序默認根據字符串的Unicode排序
如下代碼:
1 var arr = new Array('1','3','8','55','2','3','5','66');
2 arr = arr.sort();
3 console.log(arr.toString())
4 // 1,2,3,3,5,55,66,8
可以看到上面的輸出結果并沒有按照大小進行排列,所以這種情況就需要往sort里傳入一個參數
Array.sort(func);
傳遞參數這種情況所傳的參數必須為一個函數,該函數對a,b兩個參數進行比較,返回一個結果,具體如下
a 大于 b 返回一個大于0的值,a在b位置的后面
a 等于 b 返回一個等于0的值,a、b位置不變
a 小于 b 返回一個小于0的值,a在b位置的前面
如下代碼
1 var arr = new Array('1','3','8','55','2','3','5','66');
2 function compare(a, b) {
3 return a - b;
4 }
5 arr = arr.sort(compare);
6 console.log(arr.toString())
7 // 1,2,3,3,5,8,55,66
當compare函數里返回a-b的時候,可以看到是升序排列,再看以下降序
var arr = new Array('1','3','8','55','2','3','5','66');
function compare(a, b) {
return b - a;
}
arr = arr.sort(compare);
console.log(arr.toString())
// 66,55,8,5,3,3,2,1
對于對象的處理也是如此
var arr = [
{name:"zhangsan", age: 21},
{name:"lisi", age: 23},
{name:"wangwu", age: 20},
{name:"zhaoliu", age: 18},
{name:"xiaoming", age: 17},
{name:"xiaolan", age: 25}
]
function compare(arg) {
return function(a, b) {
return a[arg] - b[arg];
}
}
arr = arr.sort(compare('age'));
console.log(arr)
結果為
可以根據對象的某一個屬性進行排序
sort的使用方法是很簡單,究其原理感覺內部是冒泡排序的原理,通過對相鄰的兩個元素對比,如果前面的必后面的小,則位置不變,反之則替換位置,其原理可參考上面提到過的冒泡排序原理。
總結
以上是生活随笔為你收集整理的js几种数组排序及sort的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python正确的字符串常量_4.1 字
- 下一篇: python文本文档_python 文本