扩展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 相关文章推荐
用JavaScript隐藏控件的方法
Sep 21 Javascript
jquery蒙版控件实现代码
Dec 08 Javascript
JavaScript对IE操作的经典代码(推荐)
Mar 10 Javascript
jquery validate demo 基础
Oct 29 Javascript
设计模式中的组合模式在JavaScript程序构建中的使用
May 18 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
Dec 13 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
Jul 12 Javascript
webpack源码之loader机制详解
Apr 06 Javascript
Angular模版驱动表单的使用总结
May 05 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
May 17 Javascript
Vue.js组件高级特性实例详解
Dec 24 Javascript
24个解决实际问题的ES6代码片段(小结)
Feb 02 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
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
php与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
ThinkPHP 3.2.2实现事务操作的方法
2017/05/05 PHP
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
js创建对象的方法汇总
2016/01/07 Javascript
javascript中的3种继承实现方法
2016/01/27 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
微信小程序 label 组件详解及简单实例
2017/01/10 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
2017/09/22 jQuery
微信小程序实现运动步数排行功能(可删除)
2018/07/05 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
react实现antd线上主题动态切换功能
2019/08/12 Javascript
在vue中使用防抖和节流,防止重复点击或重复上拉加载实例
2019/11/13 Javascript
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python获取当前日期和时间的方法
2015/04/30 Python
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
DNA测试:Orig3n
2019/03/01 全球购物
戴尔英国翻新电脑和电子产品:Dell UK Refurbished Computers
2019/07/30 全球购物
化工专业个人的求职信范文
2013/11/28 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
物资采购方案
2014/06/12 职场文书
社区反邪教工作方案
2014/06/16 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
三八妇女节标语
2014/10/09 职场文书
闪闪红星观后感
2015/06/08 职场文书
庆七一晚会主持词
2015/06/30 职场文书
秋季运动会加油词
2015/07/18 职场文书
python 经纬度求两点距离、三点面积操作
2021/06/03 Python