扩展js对象数组的OrderByAsc和OrderByDesc方法

   看了一段时间关于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);

  }

时间: 2024-09-30 15:30:05

扩展js对象数组的OrderByAsc和OrderByDesc方法的相关文章

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

看了一段时间关于js原型的知识,js的扩展方法是基于原型的,如Array.prototype.XXXX就是给Array扩展XXX方法,然后数组都能使用这个方法了. 在对象数组里面经常有根据属性来进行排序的,升序,降序的,于是自己就想写一个类似于C#里面的orderBy的方法,代码如下: 复制代码 代码如下: Array.prototype.OrderByAsc = function (func) { var m = {}; for (var i = 0; i < this.length; i++

json转js对象数组,求助

问题描述 json转js对象数组,求助 假设我有一个json对象,内容如下:{"10":"热卖商品","11":"限时抢购"},请问如何用js将其转换成这种格式? var data = [{ id: 10, text: '热卖商品' }, { id:11, text: '限时抢购'}]; 解决方案 var datajson = {"10":"热卖商品","11":&q

js对象数组的合并问题

问题描述 js对象数组的合并问题 var arr=[ {a:3,b:0,c:1}, {a:3,b:0,c:2}, {a:5,b:0,c:0}, {a:5,b:1,c:0} ] 判断:若a值相同,b也相同,合并 var arr=[ {a:3,b:0,c:1,2}, {a:5,b:0,c:0}, {a:5,b:1,c:0} ] 解决方案 var arr = [{ a: 3, b: 0, c: 1 }, { a: 3, b: 0, c: 2 }, { a: 5, b: 0, c: 0 }, { a:

判断JS对象是否拥有某属性的方法推荐_javascript技巧

两种方式,但稍有区别 1,in 运算符 var obj = {name:'jack'}; alert('name' in obj); // --> true alert('toString' in obj); // --> true 可看到无论是name,还是原形链上的toString,都能检测到返回true. 2,hasOwnProperty 方法 var obj = {name:'jack'}; obj.hasOwnProperty('name'); // --> true obj.

js对象数组按属性快速排序_javascript技巧

按所推荐的程序在IE下跑了下,的确,排序耗时很小. 复制代码 代码如下: <script> /* * 洗牌 */ function getRandomPlayCard(m){ var array1=new Array(m); for(var i=0;i<m;i++){ var rnd=Math.floor(Math.random()*(i+0.99999)) array1[i]=array1[rnd]; array1[rnd]=i; } return array1; }; /* * 快速

js查找数组不同顺序排列的字符串方法

需求描述:从一组数组中找出一组按不同顺序排列的字符串的数组元素.假如有这样一个数组:  代码如下 复制代码 [ 'abcd', 'hello', 'bdca', 'olleh', 'cadb', 'nba', 'abn', 'abc' ] 需要找出的结果是:    代码如下 复制代码 [ 'abcd', 'bdca', 'cadb' ] 那么这里的关键点是判断一组字符串是否是否只是字符的顺序不同,只要解决整个关键点其他都好办了. 方法1:  代码如下 复制代码 var stringClassif

js对象、构造函数、命名空间、方法、属性

 <script language="javascript">  var myNameSpace = new Object(); //构造一个命名 空间myClass   //类的属性  myNameSpace.names="cnscn";  myNameSpace.age="30";  myNameSpace.ClassPersons=function(argName,argAge){ //构造类名,即构造函数      thi

javascript 对象数组根据对象object key的值排序

 本文仅仅是实现了javascript 对象数组根据对象object key的值排序,算是对自己学习javascript这么久的一个小结,希望大家能够喜欢     有个js对象数组 var ary=[{id:1,name:"b"},{id:2,name:"b"}] 需求是根据name 或者 id的值来排序,这里有个风骚的函数 函数定义:   代码如下: function keysrt(key,desc) { return function(a,b){ return

javascript 对象数组根据对象object key的值排序_javascript技巧

有个js对象数组 var ary=[{id:1,name:"b"},{id:2,name:"b"}] 需求是根据name 或者 id的值来排序,这里有个风骚的函数 函数定义: 复制代码 代码如下: function keysrt(key,desc) {   return function(a,b){     return desc ? ~~(a[key] < b[key]) : ~~(a[key] > b[key]);   } } 使用: 复制代码 代码