看了一段时间关于js原型的知识js的扩展方法是基于原型的如ArrayprototypeXXXX就是给Array扩展XXX方法然后数组都能使用这个方法了
在对象数组里面经常有根据属性来进行排序的升序降序的于是自己就想写一个类似于C#里面的orderBy的方法代码如下
代码如下:
ArrayprototypeOrderByAsc = function (func) {
var m = {};
for (var i = ; i < thislength; i++) {
for (var k = ; k < thislength; k++) {
if (func(this[i]) < func(this[k])) {
m = this[k];
this[k] = this[i];
this[i] = m;
}
}
}
return this;
}
ArrayprototypeOrderByDesc = function (func) {
var m = {};
for (var i = ; i < thislength; i++) {
for (var k = ; k < thislength; 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: } { name: ccc grade: } { name: bbb grade: }];
var orderArr = arrOrderByDesc(function (a) {
return agrade;
});
然后输出一下看一下结果吧
代码如下:
for (var i = ; i < orderArrlength; i++) {
documentwrite(orderArr[i]name);
}