扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路

 更新时间:2013年05月17日 18:03:46   作者:  
js的扩展方法是基于原型的,如Array.prototype.XXXX就是给Array扩展XXX方法,然后数组都能使用这个方法了,在对象数组里面经常有根据属性来进行排序的,升序,降序的,下面与大家分享自己写的一个
看了一段时间关于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菜鸟,如果有什么想法啥的,直接留言,相互交流一下

相关文章

  • JS使用canvas中的measureText方法测量字体宽度示例

    JS使用canvas中的measureText方法测量字体宽度示例

    这篇文章主要介绍了JS使用canvas中的measureText方法测量字体宽度,结合实例形式分析了canvas的measureText方法相关使用技巧,需要的朋友可以参考下
    2019-02-02
  • 微信小程序如何利用getCurrentPages进行页面传值

    微信小程序如何利用getCurrentPages进行页面传值

    这篇文章主要介绍了微信小程序如何利用getCurrentPages进行页面传值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • uniapp图片展示自适应等比例缩放方法举例

    uniapp图片展示自适应等比例缩放方法举例

    这篇文章主要给大家介绍了关于uniapp图片展示自适应等比例缩放方法的相关资料,在uniapp页面展示中会遇到图片展示问题,等比缩放或者自适应view大小,需要的朋友可以参考下
    2023-10-10
  • javascript实现一个数值加法函数

    javascript实现一个数值加法函数

    这篇文章主要介绍了javascript实现一个数值加法函数,十分的简单实用,方便大家理解javascript,有需要的小伙伴可以参考下。
    2015-06-06
  • 详解JavaScript什么情况下不建议使用箭头函数

    详解JavaScript什么情况下不建议使用箭头函数

    箭头函数作为ES6新增的语法,在使用时不仅能使得代码更加简洁,而且在某些场景避免this指向问题。但是箭头函数不是万能的,也有自己的缺点以及不适用的场景,本文总结了JavaScript什么情况下不建议使用箭头函数,感兴趣的可以了解一下
    2022-06-06
  • layui table表格数据的新增,修改,删除,查询,双击获取行数据方式

    layui table表格数据的新增,修改,删除,查询,双击获取行数据方式

    今天小编就为大家分享一篇layui table表格数据的新增,修改,删除,查询,双击获取行数据方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • js实现点击文本框显示日期选择器特效代码分享

    js实现点击文本框显示日期选择器特效代码分享

    这篇文章主要为大家详细介绍了javascript实现点击文本框显示日期选择器特效,提高了工作效率,推荐给大家,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-08-08
  • js中获取时间new Date()的全面介绍

    js中获取时间new Date()的全面介绍

    下面小编就为大家带来一篇js中获取时间new Date()的全面介绍。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 原生javascript实现文件异步上传的实例讲解

    原生javascript实现文件异步上传的实例讲解

    下面小编就为大家带来一篇原生javascript实现文件异步上传的实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • js结合css实现登录后才能复制的效果实例

    js结合css实现登录后才能复制的效果实例

    很多网站都有登录后才能复制的限制,什么原理呢?css属性user-select:none,通常会采用这种方式来禁止复制文本。但浏览开发者工具-审查元素,取消此样式后,就可以选中文本了。想要完整地禁止复制,还需要通过js控制选择的内容。
    2023-07-07

最新评论