扩展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 相关文章推荐
js unicode 编码解析关于数据转换为中文的两种方法
Apr 21 Javascript
jquery访问ashx文件示例代码
Aug 11 Javascript
编程语言JavaScript简介
Oct 16 Javascript
基于jQuery实现返回顶部实例代码
Jan 01 Javascript
JavaScript中的闭包
Feb 24 Javascript
Vue 2.X的状态管理vuex记录详解
Mar 23 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
Jul 09 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
Sep 18 Javascript
vue获取DOM元素并设置属性的两种实现方法
Sep 30 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
Mar 01 Javascript
js中的reduce()函数讲解
Jan 18 Javascript
微信小程序实现侧边栏分类
Oct 21 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
动漫女神老婆无限好,但日本女生可能就不是这么一回事了!
2020/03/04 日漫
php preg_replace替换实例讲解
2013/11/04 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
第一个JavaScript入门基础 document.write输出
2010/02/22 Javascript
jQuery EasyUI API 中文文档 - Form表单
2011/10/06 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
2013/03/12 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
详解一些适用于Node.js的命名约定
2019/12/08 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
用Python进行一些简单的自然语言处理的教程
2015/03/31 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
Python+tkinter使用80行代码实现一个计算器实例
2018/01/16 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
2020/02/25 Python
关于 HTML5 的七个传说小结
2012/04/12 HTML / CSS
HTML5中indexedDB 数据库的使用实例
2017/05/11 HTML / CSS
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
大学生毕业求职简历的自我评价
2013/10/24 职场文书
2014年小班元旦活动方案
2014/02/16 职场文书
工商局个人工作总结
2015/03/03 职场文书
2015入党自荐书范文
2015/03/05 职场文书
部门主管竞聘书
2015/09/15 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python
SQL Server中的游标介绍
2022/05/20 SQL Server