今天是我在博客園發的第一篇文章。給自己一點鞏固。隨便分享一波知識。
原因起始是,做一個項目的時候,我需要根據給對象去進行排序,來確定它是什么。但是又不會。
首先我們先講,在我們有10個不一樣大小的數字類型的值的話,我們如何去給數組進行排序。sort()方法是,是最強大的數組方法之一。
直接上干貨。
//定義水果數組。
var arr=['orange','apple','banana','litchi'];
console.log(arr.sort());
//(4) ["apple", "banana", "litchi", "orange"]
如果我們不給sort方法傳遞參數的話,它就會按照字母順序排列。
那么如果我們定義一個數組呢?讓它去排序。數組里面的value都是字符串。
//定義數組。’‘都是字符串形式的
var arr=['1','2','4','3'];
console.log(arr.sort());
打印出來的結果。
那么我們定義一個數組,既有字符串,但是他是數字,又有數字類型的值呢?
var arr=[1,'2',7,'3'];
console.log(arr.sort());
打印出來的結果。
還是完成了排序。那么我們來確定一下,我們放到數組的0號位是什么數據類型的。
//定義數組。’‘都是字符串形式的
var arr=[1,'2',7,'3'];
console.log(arr.sort());
console.log(typeof arr[0],typeof arr[1]);
打印出來的是數字類型與字符串。
那么我們可以這樣理解,sort方法,不管我們放入進去的是字符串數字類型的,還是以所謂的數字類型的都不重要,它自己有自己的一套規則。‘1’字符串的1,和數字1,sort方法會轉化成一個類型的數據去比較。然后在轉換回來。
那么,我們知道了,sort方法默認的規則是,數字類型,從小到大排序,字符串的話,就是。a-z排序。
那么,我們混合放入進數組會發生什么呢?
var arr=['d','2',4,'1','a'];
console.log(arr.sort());
還是使用sort方法排序。
拿到的結果。
這樣以來,我們至少可以得出一個依據,數字排序的優先級,比字符串排序的a-z排序的優先級高。否則,你怎么解釋,sort‘方法先排的是數字來類型的值呢?
第二個依據就是,只要是字母都會按照,a,b,c排序。數字也會默認從大到小。不管這個數組,是否混合了多種數據。
那么我們接着往下走。
如何給數組進行從大到小排序,這個時候,我們就會用到reverse()方法,反轉數組。
var arr=[1,2,3,4,5,6,7];
console.log(arr.reverse());
數組真的就從大到小進行排序了。
但是我們要切記,我們如果單獨使用。reverse的話,那么就是把數組倒着排一邊,但是這個數組,如果沒有使用sort排序的話,就會出現。它只是把數組給顛倒了一下。
比值函數排序。
var arr = [1, 11, 32, 455, 61, 99, 31, 32, 129, 98, 51];
function compare(a, b) {
return b - a;
};
arr.sort(compare);
console.log(arr);
也是一種排序方法。
以及對象排序。
//定義數組對象
var arr = [
{
name: '三姓家奴',
age: 12,
}, {
name: '宋恆',
age: 10,
}, {
name: '霍亞豪',
age: 17,
}, {
name: '相博',
age: 20,
},
];//傳入ab參數
function object(a,b) {
return b.age-a.age;
}
arr.sort(object);
console.log(arr);
咱們console一下,看看會打印什么奇怪的東西,
果然是按照對象的age屬性進行排序了。
這大概是sort方法的一部分使用,第一次寫博客園,有不對的地方還請指正。菜雞在此謝過了。