JS中的groupBy方法

2021-10-05 06:59:55 字數 1052 閱讀 7721

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

function groupby( array , f ) ;

array.foreach( function( o ) );

return

object.keys(groups).map( function( group ) );}

let list =[,,

,,,,

,];

let sorted =groupby(list, function(item));

console.log(sorted);

函式groupby有兩個形參,一為物件陣列,二為匿名函式(該函式功能:返回物件的某個指定屬性的屬性值並存放在陣列中);

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.keys(groups)是取出groups物件中的所有key,然後遍歷乙個個key組成的新陣列,返回分好了組的二維陣列,至此大功告成~~~

[ [ ,,,

],[ ,,,

] ]

JS中的groupBy方法

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

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東南 ...