簡體   English   中英

如何在UnderScore.js中創建嵌套組

[英]How to Create Nested Group By in UnderScore.js

我有一個數組,我需要根據size_y將它們分組;

[
    {"col":4,"row":1,"size_x":1,"size_y":4}, 
    {"col":2,"row":2,"size_x":1,"size_y":2}, 
    {"col":1,"row":1,"size_x":3,"size_y":1},
    {"col":1,"row":4,"size_x":3,"size_y":1}, 
    {"col":1,"row":5,"size_x":4,"size_y":1}
]

現在,如果size_y為4,我想將所有小於或等於4的行分組。

[
    {"col":4,"row":1,"size_x":1,"size_y":4}, 
    {"col":2,"row":2,"size_x":1,"size_y":2}, 
    {"col":1,"row":1,"size_x":3,"size_y":1},
    {"col":1,"row":4,"size_x":3,"size_y":1},
],
[
    {"col":1,"row":5,"size_x":4,"size_y":1}
]

提前致謝。

您可以使用生成器函數和.splice()

 let arr = [ {"col":4,"row":1,"size_x":1,"size_y":4}, {"col":2,"row":2,"size_x":1,"size_y":2}, {"col":1,"row":1,"size_x":3,"size_y":1}, {"col":1,"row":4,"size_x":3,"size_y":1}, {"col":1,"row":5,"size_x":4,"size_y":1} ]; function* divideBy(a) { const [copy, [{size_y}] = copy] = [[...a]]; while (copy.length) yield copy.splice(0, size_y); } let res = [...divideBy(arr)]; console.log(res) 

使用純JS,您可以簡單地使用reduce

 let arr = [{"col":4,"row":1,"size_x":1,"size_y":4},{"col":2,"row":2,"size_x":1,"size_y":2},{"col":1,"row":1,"size_x":3,"size_y":1}, {"col":1,"row":4,"size_x":3,"size_y":1},{"col":1,"row":5,"size_x":4,"size_y":1}] let op = arr.reduce((out,inp)=>{ if(inp.row > 4){ if(out['>4']){ out['>4'].push(inp) } else { out['>4'] = [inp] } }else{ if(out['<4']){ out['<4'].push(inp) } else { out['<4'] = [inp] } } return out },{}) console.log(Object.values(op)) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM