扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路


Posted in Javascript onMay 17, 2013

看了一段时间关于js原型的知识,js的扩展方法是基于原型的,如Array.prototype.XXXX就是给Array扩展XXX方法,然后数组都能使用这个方法了。

在对象数组里面经常有根据属性来进行排序的,升序,降序的,于是自己就想写一个类似于C#里面的orderBy的方法,代码如下:

Array.prototype.OrderByAsc = function (func) { 
var m = {}; 
for (var i = 0; i < this.length; i++) { 
for (var k = 0; k < this.length; k++) { 
if (func(this[i]) < func(this[k])) { 
m = this[k]; 
this[k] = this[i]; 
this[i] = m; 
} 
} 
} 
return this; 
} 
Array.prototype.OrderByDesc = function (func) { 
var m = {}; 
for (var i = 0; i < this.length; i++) { 
for (var k = 0; k < this.length; k++) { 
if (func(this[i]) > func(this[k])) { 
m = this[k]; 
this[k] = this[i]; 
this[i] = m; 
} 
} 
} 
return this; 
}

调用的方法如下:
var arr = [{ name: 'aaa', grade: 20 }, { name: 'ccc', grade: 30 }, { name: 'bbb', grade: 40 }]; 
var orderArr = arr.OrderByDesc(function (a) { 
return a.grade; 
});

然后输出一下,看一下结果吧:
for (var i = 0; i < orderArr.length; i++) { 
document.write(orderArr[i].name); 
}

本人js菜鸟,如果有什么想法啥的,直接留言,相互交流一下
Javascript 相关文章推荐
jQuery 性能优化手册 推荐
Feb 23 Javascript
jquery使用jxl插件导出excel示例
Apr 14 Javascript
让checkbox不选中即将选中的checkbox不选中
Jul 11 Javascript
简介JavaScript中Math.cos()余弦方法的使用
Jun 15 Javascript
AngularJs实现分页功能不带省略号的代码
May 30 Javascript
Vue.js第三天学习笔记(计算属性computed)
Dec 01 Javascript
微信JS SDK接入的几点注意事项(必看篇)
Jun 23 Javascript
原生JS实现日历组件的示例代码
Sep 22 Javascript
JavaScript数据结构之单链表和循环链表
Nov 28 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
Mar 08 Javascript
通过JS深度判断两个对象字段相同
Jun 14 Javascript
jQuery实现可以计算进制转换的计算器
Oct 19 jQuery
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
May 17 #Javascript
javascript解决innerText浏览器兼容问题思路代码
May 17 #Javascript
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
May 17 #Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
May 17 #Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
May 17 #Javascript
extjs ColumnChart设置不同的颜色实现代码
May 17 #Javascript
JQuery设置和去除disabled属性的5种方法总结
May 16 #Javascript
You might like
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
Yii全局函数用法示例
2017/01/22 PHP
PHP数组常用函数实例小结
2018/08/20 PHP
用脚本调用样式的几种方法
2006/12/09 Javascript
javascript json 新手入门文档
2009/12/03 Javascript
THREE.JS入门教程(3)着色器-下
2013/01/24 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
详细分析JavaScript函数定义
2015/07/16 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
vue实现文件上传功能
2018/08/13 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
微信小程序点击保存图片到本机功能
2019/12/13 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
[00:32]DOTA2上海特级锦标赛 COL战队宣传片
2016/03/04 DOTA
讲解python参数和作用域的使用
2013/11/01 Python
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
TensorFlow损失函数专题详解
2018/04/26 Python
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
Python+opencv 实现图片文字的分割的方法示例
2019/07/04 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
python 多线程中join()的作用
2020/10/29 Python
Python识别处理照片中的条形码
2020/11/16 Python
个人校本研修方案
2014/05/26 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
2015年党员公开承诺事项
2015/04/27 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android
Java 多线程并发FutureTask
2022/06/28 Java/Android
python manim实现排序算法动画示例
2022/08/14 Python