JS中的groupBy方法

2022-01-22 02:21:46 字數 1017 閱讀 9465

最近工作中需要寫一些運營資料包表的頁面,後端返回的資料都是未處理過的json,所以,大量的運算任務交給了前端來做,這其中有乙個功能就是對資料進行分組,一開始我自己也嘗試寫了一些,但**量比較大,顯得很繁瑣,直到後來在stackoverflow上看到了某位大牛寫的方法,非常簡潔優雅,自己也進行修改簡化。**如下:

function groupby( array , id ) ;

array.foreach( function( o ) );

return

object.values(groups);

}let name = "

name

"let list =[,,

,,,,

,];let sorted =groupby(list, name);

console.log(sorted);

函式groupby有兩個形參,一為物件陣列,二為指定分類方式的key;

groupby函式內,先建立乙個空物件;

然後foreach遍歷物件陣列,遍歷時要執行的函式中只有乙個形參o(陣列中的每個元素);

由於下面函式呼叫是想用name來分組,因此let group = json.stringify( f(o) ),相當於先獲取到物件陣列list中的name屬性對應的屬性值並放入陣列中:["john"],然後再將屬性值轉換為json字串:'["john"]';

groups[group] = groups[group] || ,在js中物件也是關聯陣列,因此這裡相當於做了兩件事,一是把group作為groups的key,二是將對應的value初始化,第一次執行為空陣列,迴圈執行時找到相同的name時保持不變;

groups[group].push( o ),這句相當於把list中每個物件壓入陣列中作為value;

最後,object.values(groups)是取出groups物件中的所有values,返回分好了組的二維陣列,至此大功告成~~~

[ [ ,,,

],[ ,,,

] ]

JS中的groupBy方法

最近工作中需要寫一些運營資料包表的頁面,後端返回的資料都是未處理過的json,所以,大量的運算任務交給了前端來做,這其中有乙個功能就是對資料進行分組,一開始我自己也嘗試寫了一些,但 量比較大,顯得很繁瑣,直到後來在stackoverflow上看到了某位大牛寫的方法,非常簡潔優雅,如下 functio...

group by 方法的使用

有時候,你也許需要將乙個陣列中的元素根據某種規則進行分組。那麼group by方法就是很好的選擇。先來看下面的例子 a 1.20 to a 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 a.group by 0,1,2,3,4 1,5,6,7,...

linq to xml中group by的應用

xml文件內容如下 003小張 female 30南大 13328981152 004徐越 female 22乙個大學 13328981152 005小櫻 female 22南大 13328981152 006小趙 female 22南郵 13328981152 007小虎 female 22東南 ...