最近工作中需要寫一些運營資料包表的頁面,後端返回的資料都是未處理過的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東南 ...