扩展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调用WebService的实现代码
Jun 19 Javascript
对jQuery的事件绑定的一些思考(补充)
Apr 20 Javascript
Area 区域实现post提交数据的js写法
Apr 22 Javascript
node.js中的events.emitter.once方法使用说明
Dec 10 Javascript
JS对字符串编码的几种方式使用指南
May 14 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
Dec 26 Javascript
Web前端开发工具——bower依赖包管理工具
Mar 29 Javascript
网页瀑布流布局jQuery实现代码
Oct 21 Javascript
Ionic + Angular.js实现图片轮播的方法示例
May 21 Javascript
原生JS获取元素的位置与尺寸实现方法
Oct 18 Javascript
Vue组件中prop属性使用说明实例代码详解
May 31 Javascript
vue实现在进行增删改操作后刷新页面
Aug 05 Javascript
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
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
php 自写函数代码 获取关键字 去超链接
2010/02/08 PHP
php中通过虚代理实现延迟加载的实现代码
2011/06/10 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
2011/10/27 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
JavaScript Sort 表格排序
2009/10/31 Javascript
jQuery操作select的实例代码
2012/06/14 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
JavaScript数据结构与算法之链表
2016/01/29 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
2016/03/31 Javascript
纯js实现手风琴效果代码
2020/04/17 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
JavaScript生成.xls文件的代码
2016/12/22 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
基于Vue实现后台系统权限控制的示例代码
2017/08/29 Javascript
使用canvas实现一个vue弹幕组件功能
2018/11/30 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
python实现逻辑回归的方法示例
2017/05/02 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
python selenium 查找隐藏元素 自动播放视频功能
2019/07/24 Python
python安装和pycharm环境搭建设置方法
2020/05/27 Python
澳大利亚女士时装在线:Rockmans
2018/09/26 全球购物
Quiksilver荷兰官方网站:冲浪和滑雪板
2019/11/16 全球购物
MYSQL支持事务吗
2013/08/09 面试题
大学毕业生通用自我评价
2014/01/05 职场文书
应届大学生简历中的自我评价
2014/01/15 职场文书
平安建设实施方案
2014/03/19 职场文书
技术支持岗位职责
2015/02/13 职场文书
保险公司增员口号
2015/12/25 职场文书
Elasticsearch 基本查询和组合查询
2022/04/19 Python
海康机器人重磅发布全新算法开发平台VM4.2
2022/04/21 数码科技