扩展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 相关文章推荐
使用TextRange获取输入框中光标的位
Oct 14 Javascript
javascript中的if语句使用介绍
Nov 20 Javascript
Jquery给基本控件的取值、赋值示例
May 23 Javascript
node.js中Socket.IO的进阶使用技巧
Nov 04 Javascript
JavaScript中的getDay()方法使用详解
Jun 09 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
Dec 12 Javascript
从零学习node.js之利用express搭建简易论坛(七)
Feb 25 Javascript
JS实现两周内自动登录功能
Mar 23 Javascript
利用nvm管理多个版本的node.js与npm详解
Nov 02 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
Feb 08 Javascript
vue h5移动端禁止缩放代码
Oct 28 Javascript
JavaScript架构localStorage特殊场景下二次封装操作
Jun 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
浅谈php和.net的区别
2014/09/28 PHP
php递归法读取目录及文件的方法
2015/01/30 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
php实现数字补零的方法总结
2018/09/12 PHP
记录几个javascript有关的小细节
2007/04/02 Javascript
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
jquery里的each使用方法详解
2010/12/22 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
2013/07/09 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
iframe里使用JavaScript控制主页转向的方法
2015/04/03 Javascript
arguments对象验证函数的参数是否合法
2015/06/26 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
JS通过位运算实现权限加解密
2018/08/14 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
Python 比较两个数组的元素的异同方法
2017/08/17 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
毕业生造价工程师求职信
2013/10/17 职场文书
物业管理计划书
2014/01/10 职场文书
十佳教师事迹材料
2014/01/11 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
大型公益活动策划方案
2014/08/20 职场文书
2015毕业实习推荐信
2015/03/23 职场文书
部门2015年度工作总结
2015/04/29 职场文书