写在前面:没想到个人一篇对IDE
评论的文章,获得了十几条评论,真是惭愧。写的具体编程知识点的文章,却是鲜有评论。~ 23333javascript
数组中已经存在两个能够直接用来重排序的方法:reverse()
和sort()
。php
reverse()
方法用于反转数组。
默认状况下,sort()
方法按升序排列数组项–即最小值在最前面,最大值在最后面。为了实现排序,sort()
方法会调用每一个数组项的toString()
转型方法,而后比较获得的字符串,以肯定如何排序。即便数组的每一项都是数值,sort()方法比较的也是字符串
java
var values = [0 ,1 , 5, 10 ,15];
values.sort();
console.log(values); // 0,1,10,15,5
sort()方法能够接受一个比较函数做为参数,以便咱们指定哪一个值位于哪一个值的前面python
比较函数接受两个参数,若是第一个参数应该位于第二个以前则返回一个负数,若是两个参数相等则返回0,若是第一个参数应该位于第二个参数以后则返回一个正数。以下所示:web
var stu1 = {
name: "python", age: 80, grade: 99,
toString: function () {
return this.name + " , " + this.age + " , " + this.grade;
}
};
var stu2 = {
name: "javascript", age: 30, grade: 88, toString: function () {
return this.name + " , " + this.age + " , " + this.grade;
}
};
var stu3 = {
name: "php", age: 18, grade: 59, toString: function () {
return this.name + " , " + this.age + " , " + this.grade;
}
};
var stu4 = {
name: "vb", age: 50, grade: 70, toString: function () {
return this.name + " , " + this.age + " , " + this.grade;
}
};
var stu5 = {
name: "shell", age: 60, grade: 70, toString: function () {
return this.name + " , " + this.age + " , " + this.grade;
}
};
var stu6 = {
name: "java", age: 40, grade: 99, toString: function () {
return this.name + " , " + this.age + " , " + this.grade;
}
};
var langArr = [stu1, stu2, stu3, stu4, stu5, stu6];
console.log("排序前:" + langArr);
console.log("-------------------");
function compare(a, b) {
if (a.grade > b.grade) {
return -5;
} else if (a.grade === b.grade) {
return 0;
} else {
return 5;
}
} // todo:简单排序,仅仅经过分数进行排序
function cmp(a, b) {
if (a.grade > b.grade) {
return -5;
} else if (a.grade === b.grade) {
// return 0;
if (a.age < b.age) {
return -4;
} else if (a.age === b.age) {
return a.name.localeCompare(b.name);
} else {
return 4;
}
} else {
return 5;
}
} // todo:复杂排序,先比较分数,而后是年龄,最后是名字字符串
// langArr.sort(compare);
langArr.sort(cmp);
console.log("排序后:" + langArr);
输出显示:shell
排序前:python , 80 , 99,javascript , 30 , 88,php , 18 , 59,vb , 50 , 70,shell , 60 , 70,java , 40 , 99 -------------------
排序后:java , 40 , 99,python , 80 , 99,javascript , 30 , 88,vb , 50 , 70,shell , 60 , 70,php , 18 , 59
从输出结果能够看到,的确如咱们预期:先比较分数,而后是年龄,最后是名字字符串。编程
写在后面:对于javascript
,我以前放弃了N
次,如今又想拾起,因此开始看这相关的资料了。~数组