js排序(二维数组/英文/中文)方法封装
来源:互联网 发布:中航期货软件 编辑:程序博客网 时间:2024/06/05 14:13
在实际业务中,往往会碰到排序的问题,今天我就特地梳理下我常用到的几个小方法,放到公共util里能提高不少效率呢!
1.一维数组排序
(1)js原生sort
/* * @Name 数组排序 * @Param * list {array} 原始数组 * mode {string} 默认asc升序 desc降序 * @Author zhaopeng@xunlei.com */function sortArray(list,mode='asc'){var compare = function(a,b){ if (mode == 'asc'){ return a - b; } else if (mode == 'desc'){ return b - a; }};var res = list.sort(compare);return res;}var res = sortArray(arr,'desc')console.log(JSON.stringify(res))
(2)快排
var count = 0var arr = [85, 24, 63, 45, 17, 31, 96, 50]function quickSort(arr){ if (arr.length <= 1) { return arr; } var pivotIndex = Math.floor(arr.length / 2); var pivot = arr.splice(pivotIndex, 1)[0]; var left = []; var right = []; for (var i = 0; i < arr.length; i++){ if (arr[i] < pivot) { left.push(arr[i]); } else { right.push(arr[i]); } }count ++ return quickSort(left).concat([pivot], quickSort(right));};var resArr = quickSort(arr)console.log('排了' + count + '次')console.log(resArr)2.二维数组排序
var arr = [ {'name' : 'abc','age' : 20}, {'name' : 'cde','age' : 19}, {'name' : 'dfc','age' : 25}, {'name' : 'bde','age' : 21} ];/* * @Name 数组按照某一项key值排序 * @Param * list {array} 原始数组 * property {string} 需要排的属性 * mode {string} 默认asc升序 desc降序 * @Author zhaopeng@xunlei.com */function sortArrayByProperty(list,property,mode='asc'){var compare = function(property){ return function(a,b){ var value1 = a[property]; var value2 = b[property]; if (mode == 'asc'){ return value1 - value2; } else if (mode == 'desc'){ return value2 - value1; } }};var res = list.sort(compare(property));return res;}var res = sortArrayByProperty(arr,'age','asc')console.log(JSON.stringify(res))3.字符串排序,按照首字母
(1)英文
var list = [{name: "bbb"},{name: "ddd"},{name: "aaa"}];function stringSort(property){ return function(a,b){ var value1 = a[property].charCodeAt(0); var value2 = b[property].charCodeAt(0); return value1 - value2; }}console.log(JSON.stringify(list.sort(stringSort('name'))));
(2)中文
var list3 = [{loc: "武汉"},{loc: "北京"},{loc: "上海"},{loc: "天津"}];function chineseCharacters(property){ return function(a,b){ var value1 = a[property].charAt(0); var value2 = b[property].charAt(0); return value1.localeCompare(value2); }}console.log(JSON.stringify(list3.sort(chineseCharacters('loc'))));
阅读全文
1 0
- js排序(二维数组/英文/中文)方法封装
- js二维数组定义与排序方法
- js二维数组排序
- js二维数组排序
- js 二维数组排序
- js 二维数组排序问题
- js 二维数组的排序
- js数组中文排序
- php 二维数组排序方法
- js sort 二维数组排序用法
- PHP中二维数组的排序方法
- PHP中二维数组的排序方法
- PHP中二维数组的排序方法
- php二维数组排序方法(array_multisort usort)
- php二维数组排序方法(array_multisort usort)
- 简单的PHP二维数组排序方法
- 暴力题二维数组排序方法XTU1246
- js中二维数组的创建方法
- java-有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
- Genymotion 2017版本支持ARM的新方式
- 进程和线程关系及区别
- (良心)世上最全设计模式导读(含难度预警与使用频率完整版)
- crontab定时任务执行PHP脚本时,file_put_contents不能写入文件
- js排序(二维数组/英文/中文)方法封装
- 挑战程序竞赛系列(32):4.5 A*与IDA*
- Mysql 1452
- 更新用blob字段存储照片的Java代码
- 一种排序
- 线程的五大状态
- stl的经典例题
- 23种模式之一单例模式
- java-判断101-200之间有多少个素数,并输出所有素数