【发布时间】:2022-10-13 23:29:36
【问题描述】:
我有一个这样的数组:
const arr = [{flagCount: 3, rank:1}, {flagCount: 3, rank:2}, {flagCount: 1, rank:3}, {flagCount: 1,rank:4}, {flagCount: 1, rank:5}, {flagCount: 2, rank:6},{flagCount: 2, rank:7},{flagCount: 2,rank:8},{flagCount: 1,rank:9}]
现在,我想将对象分组为块,其中单个块将包含总标志数为 3 或更少的对象(不应超过3) -
例如,结果数组应如下所示:
const resultArr = [[{flagCount: 3,rank:1}], [{flagCount: 3,rank:2}], [{flagCount: 1,rank:3}, {flagCount: 1,rank:4}, {flagCount: 1,rank:5}], [{flagCount: 2,rank:6}], [{flagCount: 2,rank:7}], [{flagCount: 2,rank:8}, {flagCount: 1,rank:9}]]
即,在任何给定的块中,flagCount 值不超过 3。
此外,在块数组中也必须保持排名顺序!
我该如何做到这一点?
【问题讨论】:
-
似乎一个简单的
for循环就可以实现这一点。你试过什么吗?自己研究过解决这个问题吗? -
有什么帮助吗?我试过运行一个 for 循环并在每次迭代时切片!有什么帮助吗?在你否决这个问题之前?
-
这回答了你的问题了吗? Split array into chunks of a total value
-
@HereticMonkey 不幸的是没有!想象一下给定数组中的每个对象都有一个等级 - 例如第一个对象的等级为 1.. 第二个对象的等级为 2.. 等等。分块数组必须以相同的顺序保持排名。分块数组不应该随机挑选对象并放入嵌套数组中。
-
@HereticMonkey 我已经用 rank 编辑了问题!
标签: javascript typescript ecmascript-6