擴展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);
        }

本人js菜鳥,如果有什么想法啥的,直接留言,相互交流一下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM