扩展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来动态的修改url,实现对url的增删查改
Sep 01 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
Dec 13 Javascript
jQuery实现首页顶部可伸缩广告特效代码
Apr 15 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
Apr 16 Javascript
javascript图片预加载完整实例
Dec 10 Javascript
第二章之Bootstrap 页面排版样式
Apr 25 Javascript
jquery,js简单实现类似Angular.js双向绑定
Jan 13 Javascript
jquery实现图片平滑滚动详解
Mar 22 jQuery
详解Node.js 命令行程序开发教程
Jun 07 Javascript
js实现导航跟随效果
Nov 17 Javascript
Vue.js 中的 v-show 指令及用法详解
Nov 19 Javascript
JQuery表单元素取值赋值方法总结
May 12 jQuery
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实现监控varnish缓存服务器的状态
2014/12/30 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
从新浪弄下来的全屏广告代码 与使用说明
2007/03/15 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
2013/06/08 Javascript
由ReactJS的Hello world说开来
2015/07/02 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
2016/06/27 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
node.js +mongdb实现登录功能
2020/06/18 Javascript
vant实现购物车功能
2020/06/29 Javascript
Vue3 响应式侦听与计算的实现
2020/11/11 Javascript
Vue使用鼠标在Canvas上绘制矩形
2020/12/24 Vue.js
[02:52]DOTA2新手基础教程 米波
2014/01/21 DOTA
python检测服务器是否正常
2014/02/16 Python
全面解析Python的While循环语句的使用方法
2015/10/13 Python
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
详解Swift中属性的声明与作用
2016/06/30 Python
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
python 读取视频,处理后,实时计算帧数fps的方法
2018/07/10 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
python中单下划线(_)和双下划线(__)的特殊用法
2019/08/29 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
Python使用configparser读取ini配置文件
2020/05/25 Python
美国踏板车和轻便摩托车销售网站:Mega Motor Madness
2020/02/26 全球购物
int和Integer有什么区别
2013/05/25 面试题
物业管理求职自荐信
2013/09/25 职场文书
高中自我鉴定范文
2013/11/03 职场文书
教师演讲稿大全
2014/05/16 职场文书
青春飞扬演讲稿
2014/09/11 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
2014年依法行政工作总结
2014/11/19 职场文书
同学聚会邀请函
2015/01/30 职场文书
分享提高 Python 代码的可读性的技巧
2022/03/03 Python
浅谈Vue的computed计算属性
2022/03/21 Vue.js
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis