博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自己写的一个javascriptsort万能比较函数
阅读量:5272 次
发布时间:2019-06-14

本文共 1940 字,大约阅读时间需要 6 分钟。

看完《javascript语言精粹》中的array.sort(comparefn)一节(Page81),很有启发性,于是自己试着实现这样一个通用函数by:无论数组对象为何种类型,调用此函数就能实现人们一般认知意义上的排序。

函数写完,发现没有起作用,debug了好久,最后还是决定求助了!(http://sfau.lt/bNWpU)很快得到了的解答,感谢他的帮助!

附上函数代码:

var by = function (name,minor){        return function (a,b){            var objBy =  function (a,b){                var aValue,bValue;                            aValue = a[name];                bValue = b[name];                if (aValue === bValue){                    return typeof minor === 'function' ? minor(a,b) : 0;                }                if (typeof aValue === typeof bValue){                    return aValue < bValue ? -1 : 1;                }                    return typeof aValue < typeof bValue ? -1 : 1;                    }            var generalBy  = function (a,b){                if (a === b){                    return 0;                }                if (typeof a === 'string' && typeof b === 'string'){                    return a.localeCompare(b);                }                if (typeof a === typeof b){                    return a < b ? -1 : 1;                }                    return typeof a < typeof b ? -1 : 1;                }                        if (a && b && typeof a ==='object' && typeof b === 'object'){                            return objBy(a,b);                        }            return generalBy(a,b);                                    }                }                        var arry1 = [8,90,10,2,100,34,35,12];    var arry2 = [4,20,10,34,"hello word","杀星","my god","哈哈哈","高级编程","爱情","四货","一个人" ,"大人"];    var arry3 = [{name:"maggie",sex:"famale",age:43},{name:"gino",sex:"male",age:28},{name:"laura",sex:"famale",age:20},{name:"tino",sex:"male",age:25},{name:"amy",sex:"famale",age:27}];        console.log(arry1.sort(by()));    console.log(arry2.sort(by()));    console.log(arry3.sort(by('sex',by('age'))));

 

转载于:https://www.cnblogs.com/ginowang42/archive/2013/04/04/2999352.html

你可能感兴趣的文章
CS61A Efficiency 笔记
查看>>
ArcGIS Server Javascript 多图对比功能
查看>>
微信上传素材返回 '{"errcode":41005,"errmsg":"media data missing"}',php5.6返回
查看>>
div或者p标签单行和多行超出显示省略号
查看>>
Elasticsearch 滚动重启 必读
查看>>
Hadoop基本概念
查看>>
java.util.zip压缩打包文件总结一:压缩文件及文件下面的文件夹
查看>>
浅说 apache setenvif_module模块
查看>>
MySQL--数据插入
查看>>
重新学习python系列(二)? WTF?
查看>>
shell脚本统计文件中单词的个数
查看>>
SPCE061A学习笔记
查看>>
sql 函数
查看>>
hdu 2807 The Shortest Path 矩阵
查看>>
熟悉项目需求,要知道产品增删修改了哪些内容,才会更快更准确的在该项目入手。...
查看>>
JavaScript 变量
查看>>
java实用类
查看>>
smarty模板自定义变量
查看>>
研究称90%的癌症由非健康生活习惯导致
查看>>
命令行启动Win7系统操作部分功能
查看>>