js实例教程-js数组自定义排序代码教程

发布时间:2018-12-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了js实例教程-js数组自定义排序代码教程脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

数组中已经存在两个可以直接用来重排序的方法:reverse()和sort()

reverse()方法用于反转数组

默认情况下,sort()方法按升序排列数组项–即最小值在最前面,最大值在最后面。为了实现排序,sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定如何排序。即使数组的每一项都是数值,sort()方法比较的也是字符串

 VAR values = [0 ,1 , 5, 10 ,15]; values.sort();  console.LOG(values); // 0,1,10,15,5

sort()方法可以接受一个比较函数作为参数,以便我们指定哪个值位于哪个值的前面

比较函数接受两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数应该位于第二个参数之后则返回一个正数。如下所示:

  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); 

输出显示:

 排序前: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

从输出结果可以看到,的确如我们预期:先比较分数,然后是年龄,最后是名字字符串。

数组中已经存在两个可以直接用来重排序的方法:reverse()和sort()。

reverse()方法用于反转数组

默认情况下,sort()方法按升序排列数组项–即最小值在最前面,最大值在最后面。为了实现排序,sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定如何排序。即使数组的每一项都是数值,sort()方法比较的也是字符串

 var values = [0 ,1 , 5, 10 ,15]; values.sort();  console.log(values); // 0,1,10,15,5

sort()方法可以接受一个比较函数作为参数,以便我们指定哪个值位于哪个值的前面

比较函数接受两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数应该位于第二个参数之后则返回一个正数。如下所示:

  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); 

输出显示:

 排序前: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技巧 脚本宝典 欢迎评论哦!&nbsp;js技巧,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的js实例教程-js数组自定义排序代码教程全部内容,希望文章能够帮你解决js实例教程-js数组自定义排序代码教程所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。