扩展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 相关文章推荐
让getElementsByName适应IE和firefox的方法
Sep 24 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
Sep 22 Javascript
jQuery实现手机号码输入提示功能实例
Apr 30 Javascript
浅谈JavaScript中的对象及Promise对象的实现
Nov 15 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
Jul 12 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
Sep 19 Javascript
JavaScript数组复制详解
Feb 02 Javascript
js上传图片预览的实现方法
May 09 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
Feb 10 Javascript
vue项目前端错误收集之sentry教程详解
May 27 Javascript
Koa从零搭建到Api实现项目的搭建方法
Jul 30 Javascript
Jquery如何使用animation动画效果改变背景色的代码
Jul 20 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
php中几种常见安全设置详解
2010/04/06 PHP
Windows下XDebug 手工配置与使用说明
2010/07/11 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
Yii2 如何在modules中添加验证码的方法
2017/06/19 PHP
javascript Ext JS 状态默认存储时间
2009/02/15 Javascript
javascript 面向对象 function类
2010/05/13 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
基于Vue组件化的日期联动选择器功能的实现代码
2018/11/30 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
Python实现简单状态框架的方法
2015/03/19 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
详解Python中的文件操作
2016/08/28 Python
Python实现的文本简单可逆加密算法示例
2017/05/18 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
如何使用python进行pdf文件分割
2019/11/11 Python
django框架ModelForm组件用法详解
2019/12/11 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
详解Python中的路径问题
2020/09/02 Python
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS
90后毕业生的求职信范文
2013/09/21 职场文书
护士演讲稿范文
2014/01/05 职场文书
关于爱国的标语
2014/06/24 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
群众路线教育实践活动方案
2014/10/31 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
2019教师的学习计划
2019/06/25 职场文书
使用refresh_token实现无感刷新页面
2022/04/26 Javascript