扩展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 相关文章推荐
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
Jan 15 Javascript
javascript的parseFloat()方法精度问题探讨
Nov 26 Javascript
JavaScript中的apply和call函数详解
Jul 20 Javascript
jQuery实现自动调整字体大小的方法
Jun 15 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
Dec 11 Javascript
基于JavaScript实现下拉列表左右移动代码
Feb 07 Javascript
详解ES6之async+await 同步/异步方案
Sep 19 Javascript
浅谈ajax在jquery中的请求和servlet中的响应
Jan 22 jQuery
Bootstrap4如何定制自己的颜色和风格
Feb 26 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
Mar 08 Javascript
微信小程序下拉框组件使用方法详解
Dec 28 Javascript
Vue将页面导出为图片或者PDF
Aug 17 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作的文本留言本的例子(一)
2006/10/09 PHP
php MYSQL 数据备份类
2009/06/19 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
ThinkPHP框架安全实现分析
2016/03/14 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
javascript 兼容鼠标滚轮事件
2009/04/07 Javascript
一个简单的Ext.XTemplate的实例代码
2012/03/18 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
JavaScript限定复选框的选择个数示例代码
2013/08/25 Javascript
Javascript中的return作用及javascript return关键字用法详解
2015/11/05 Javascript
JavaScript File API文件上传预览
2016/02/02 Javascript
JS弹出窗口的运用与技巧大全
2016/11/01 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
2017/06/17 Javascript
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
python实现超简单的视频对象提取功能
2018/06/04 Python
python实现公司年会抽奖程序
2019/01/22 Python
python标准库sys和OS的函数使用方法与实例详解
2020/02/12 Python
如何利用Python动态模拟太阳系运转
2020/09/04 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
canvas 绘图时位置偏离的问题解决
2020/09/16 HTML / CSS
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
百度软件工程师职位
2013/02/14 面试题
信用社竞聘演讲稿
2014/05/16 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
环卫工人节活动总结
2014/08/29 职场文书
董存瑞观后感
2015/06/11 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
省级三好学生主要事迹材料
2015/11/03 职场文书
基于PyQt5制作一个群发邮件工具
2022/04/08 Python