扩展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 相关文章推荐
css把超出的部分显示为省略号的方法兼容火狐
Jul 23 Javascript
jQuery 1.3 和 Validation 验证插件1.5.1
Jul 09 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
Jun 01 Javascript
谈一谈bootstrap响应式布局
May 23 Javascript
Jquery 整理元素选取、常用方法一览表
Nov 26 Javascript
详解AngularJS验证、过滤器、指令
Jan 04 Javascript
jQuery Ajax全解析
Feb 13 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
Oct 24 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
Aug 22 Javascript
Vue强制组件重新渲染的方法讨论
Feb 03 Javascript
Vue的双向数据绑定实现原理解析
Feb 17 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
Jul 09 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
首页四格,首页五格For6.0(GBK)(UTF-8)[12种组合][9-18][版主安装测试通过]
2007/09/24 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
浅谈PDO的rowCount函数
2015/06/18 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
javascript数组详解
2014/10/22 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
ES5 ES6中Array对象去除重复项的方法总结
2017/04/27 Javascript
Vue组件和Route的生命周期实例详解
2018/02/10 Javascript
es6数值的扩展方法
2019/03/11 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
python下setuptools的安装详解及No module named setuptools的解决方法
2017/07/06 Python
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
python实现将多个文件分配到多个文件夹的方法
2019/01/07 Python
卫校中专生个人自我评价
2013/09/19 职场文书
环境科学专业个人求职信
2013/09/26 职场文书
编辑找工作求职信分享
2014/01/03 职场文书
干部作风建设工作总结
2014/10/29 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
《中国古代诗歌散文欣赏》高中语文教材
2019/08/20 职场文书
Django程序的优化技巧
2021/04/29 Python
Centos环境下Postgresql 安装配置及环境变量配置技巧
2021/05/18 PostgreSQL
Spring Bean的实例化之属性注入源码剖析过程
2021/06/13 Java/Android
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技