扩展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 相关文章推荐
JavaScript学习笔记(一) js基本语法
Oct 25 Javascript
jquery中$each()方法的使用指南
Apr 30 Javascript
javascript实现简单加载随机色方块
Dec 25 Javascript
Bootstrap框架的学习教程详解(二)
Oct 18 Javascript
简单实现node.js图片上传
Dec 18 Javascript
React-router中结合webpack实现按需加载实例
May 25 Javascript
vue组件挂载到全局方法的示例代码
Aug 02 Javascript
Vue开发之watch监听数组、对象、变量操作分析
Apr 25 Javascript
JS实现选项卡效果的代码实例
May 20 Javascript
ES6 Set结构的应用实例分析
Jun 26 Javascript
Javascript类型判断相关例题及解析
Aug 26 Javascript
three.js显示中文字体与tween应用详析
Jan 04 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更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
Dom 是什么的详细说明
2010/10/25 Javascript
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
JS文本框追加多个下拉框的值的简单实例
2013/07/12 Javascript
简单的js表单验证函数
2013/10/28 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
2018/11/02 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
2019/02/28 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
一起深入理解js中的事件对象
2021/02/06 Javascript
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
2018/02/26 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
使用CSS禁止textarea调整大小功能的方法
2015/03/13 HTML / CSS
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
Yummie官方网站:塑身衣和衣柜必需品
2019/10/29 全球购物
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
恶意软件的定义
2014/11/12 面试题
超市采购员岗位职责
2014/02/01 职场文书
爱护环境建议书
2015/09/14 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript