扩展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实现居中弹出层代码
Aug 25 Javascript
js对象关系图 方便dom操作
Mar 18 Javascript
详谈LABJS按需动态加载js文件
May 07 Javascript
JavaScript动态添加style节点的方法
Jun 09 Javascript
javascript中new关键字详解
Dec 14 Javascript
jquery插件jquery.confirm弹出确认消息
Dec 22 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
Jan 28 Javascript
浅析Bootstrap组件之面板组件
May 04 Javascript
详解jquery easyui之datagrid使用参考
Dec 05 Javascript
JS实现瀑布流布局
Oct 21 Javascript
Vue的轮播图组件实现方法
Mar 03 Javascript
Vue elementui字体图标显示问题解决方案
Aug 18 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
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
PHP反向代理类代码
2014/08/15 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
Javascript 面向对象 重载
2010/05/13 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
Vue响应式原理详解
2017/04/18 Javascript
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
js实现简单的秒表
2020/01/16 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
Python银行系统实战源码
2019/10/25 Python
Python Flask异步发送邮件实现方法解析
2020/08/01 Python
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
技术总监的工作职责
2013/11/13 职场文书
企事业单位求职者的自我评价
2013/12/28 职场文书
婚礼证婚人证婚词
2014/01/13 职场文书
观看《永远的雷锋》心得体会
2014/03/12 职场文书
毕业自我鉴定怎么写
2014/03/25 职场文书
机械设计及其自动化专业求职信
2014/06/09 职场文书
宣传普通话标语
2014/06/27 职场文书
入党积极分子学习优秀共产党员先进事迹思想汇报
2014/09/13 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
委托培训协议书
2014/11/17 职场文书
项目备案申请报告
2015/05/15 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android
Mysql实现简易版搜索引擎的示例代码
2021/08/30 MySQL
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js