今天是我在博客园发的第一篇文章。给自己一点巩固。随便分享一波知识。
原因起始是,做一个项目的时候,我需要根据给对象去进行排序,来确定它是什么。但是又不会。
首先我们先讲,在我们有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方法的一部分使用,第一次写博客园,有不对的地方还请指正。菜鸡在此谢过了。