擴展js對象數(shù)組的OrderByAsc和OrderByDesc方法實現(xiàn)思路
更新時間:2013年05月17日 18:03:46 作者:
js的擴展方法是基于原型的,如Array.prototype.XXXX就是給Array擴展XXX方法,然后數(shù)組都能使用這個方法了,在對象數(shù)組里面經(jīng)常有根據(jù)屬性來進行排序的,升序,降序的,下面與大家分享自己寫的一個
看了一段時間關于js原型的知識,js的擴展方法是基于原型的,如Array.prototype.XXXX就是給Array擴展XXX方法,然后數(shù)組都能使用這個方法了。
在對象數(shù)組里面經(jīng)常有根據(jù)屬性來進行排序的,升序,降序的,于是自己就想寫一個類似于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;
}
調(diào)用的方法如下:
var arr = [{ name: 'aaa', grade: 20 }, { name: 'ccc', grade: 30 }, { name: 'bbb', grade: 40 }];
var orderArr = arr.OrderByDesc(function (a) {
return a.grade;
});
然后輸出一下,看一下結(jié)果吧:
for (var i = 0; i < orderArr.length; i++) {
document.write(orderArr[i].name);
}
本人js菜鳥,如果有什么想法啥的,直接留言,相互交流一下
在對象數(shù)組里面經(jīng)常有根據(jù)屬性來進行排序的,升序,降序的,于是自己就想寫一個類似于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;
}
調(diào)用的方法如下:
復制代碼 代碼如下:
var arr = [{ name: 'aaa', grade: 20 }, { name: 'ccc', grade: 30 }, { name: 'bbb', grade: 40 }];
var orderArr = arr.OrderByDesc(function (a) {
return a.grade;
});
然后輸出一下,看一下結(jié)果吧:
復制代碼 代碼如下:
for (var i = 0; i < orderArr.length; i++) {
document.write(orderArr[i].name);
}
本人js菜鳥,如果有什么想法啥的,直接留言,相互交流一下
您可能感興趣的文章:
- JavaScript常用字符串與數(shù)組擴展函數(shù)小結(jié)
- javascript Array數(shù)組對象的擴展函數(shù)代碼
- js實現(xiàn)prototype擴展的方法(字符串,日期,數(shù)組擴展)
- javascript框架設計讀書筆記之數(shù)組的擴展與修復
- js數(shù)組方法擴展實現(xiàn)數(shù)組統(tǒng)計函數(shù)
- 編寫js擴展方法判斷一個數(shù)組中是否包含某個元素
- JS的數(shù)組的擴展實例代碼
- javascript數(shù)組的擴展實現(xiàn)代碼集合
- 求js數(shù)組的最大值和最小值的四種方法
- 分享JS數(shù)組求和與求最大值的方法
- JavaScript學習筆記之數(shù)組求和方法
- JS實現(xiàn)求數(shù)組起始項到終止項之和的方法【基于數(shù)組擴展函數(shù)】
相關文章
javascript數(shù)組去重3種方法的性能測試與比較
面試題中有一題數(shù)組去重,首先想到的是對象存鍵值的方法可是遇到不同類型又能轉(zhuǎn)換成同樣的字符串的就完了接下來為大家介紹下雙重循環(huán)/存鍵值和類型實現(xiàn)去重,感興趣的各位可以參考下哈2013-03-03微信小程序全局變量改變監(jiān)聽的實現(xiàn)方法
這篇文章主要給大家介紹了關于微信小程序全局變量改變監(jiān)聽的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用微信小程序具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-07-07Javascript從數(shù)組中隨機取出不同元素的兩種方法
這篇文章給大家分享了兩種Javascript從數(shù)組中隨機取出不同元素的方法,大家可以都學習學習,這樣更能有助于大家的學習和理解,下面來一起看看吧2016-09-09