扩展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 相关文章推荐
可以用鼠标拖动的DIV实现思路及代码
Oct 21 Javascript
javascript简单实现命名空间效果
Mar 06 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
Nov 26 Javascript
node.js中的emitter.emit方法使用说明
Dec 10 Javascript
异步JS框架的作用以及实现方法
Oct 29 Javascript
jQuery插件实现多级联动菜单效果
Dec 01 Javascript
AngularJS ng-blur 指令详解及简单实例
Jul 30 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
Oct 26 Javascript
Ajax基础知识详解
Feb 17 Javascript
分享一道关于闭包、bind和this的面试题
Feb 20 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
Sep 28 Javascript
解决axios post 后端无法接收数据的问题
Oct 29 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执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
js实现的网页颜色代码表全集
2007/07/17 Javascript
PPK 谈 JavaScript 的 this 关键字 [翻译]
2009/09/29 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
面向对象的Javascript之三(封装和信息隐藏)
2012/01/27 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
基于jQuery实现仿淘宝套餐选择插件
2015/03/04 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
jQuery代码实现实时获取时间
2017/01/29 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
js中this对象用法分析
2018/01/05 Javascript
vue-cli webpack模板项目搭建及打包时路径问题的解决方法
2018/02/26 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
记录vue项目中遇到的一点小问题
2019/05/14 Javascript
Vue路由权限控制解析
2020/11/09 Javascript
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
深入理解Javascript中的this关键字
2015/03/27 Python
Python获取任意xml节点值的方法
2015/05/05 Python
Django的URLconf中使用缺省视图参数的方法
2015/07/18 Python
python中的lambda表达式用法详解
2016/06/22 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
Python如何避免文件同名产生覆盖
2020/06/09 Python
七一表彰活动方案
2014/01/18 职场文书
幼儿园中班教师寄语
2014/04/03 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android