爲javascript的方法追加groupBy方法

    突然在一個項目中需要從後臺抓取大批量數據在前臺進行分組處理,但是在javascript中本身不具備對數組進行groupBy的方法。

    因此,基於javascript的原型對於數組Array添加一個擴展方法groupBy

Array.prototype.groupBy = function (keyName) {
    var result = {};
    this.forEach(function (item) {
        if (!result[item[keyName]])
            result[item[keyName]] = new Array();
        result[item[keyName]].push(item);
    });
    return result;
}

    實際應用如下:

var array = new Array();
for (var i = 0; i < 1000; i++) {
    array.push({ "Key": Math.ceil(Math.random()*10), "Value": Math.ceil(Math.random()*100) });
}

var groupList=array.groupBy("Key");
for (var key in groupList) {
    $("<div>").append("<h1>" + key + ":" + groupList[key].length + "</h1>")
                .append($.map(groupList[key], function (item) {
                    return  item.Key+":"+item.Value;
                }).join(","))
    .appendTo($("body"))
}

    頁面輸出如下(截圖只截取了一部分):


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章