【发布时间】:2018-04-27 15:32:18
【问题描述】:
如何编写脚本,将数组的元素分组为数组数组(或数组对象),其中最后一个是按顺序分组的元素数组。
如果下一个元素 Id 是序列的一部分,则它属于 prev 组,否则将创建新数组,元素将落入其中。
如果元素 ID 高于前一个元素的 ID 大于 1 - 是相同的序列 = 当前数组。
如果元素 ID 高于前一个元素的 ID 大于 2 - 是下一个序列 = 下一个(新)数组。
如果元素相邻的 Id 来自所有方面都大于当前 Id - 当前元素将创建一个包含自身的数组,并且它的键将是它自己的 Id。
无论结果是数组还是对象 - 生成键很容易,但现在对我来说组元素很难。
您可以尝试用 JavaScript 编写,甚至可以使用 Lodash 库。
const data = [
{id: 1},
{id: 2},
{id: 3},
{id: 7},
{id: 9},
{id: 10},
{id: 12},
{id: 14},
{id: 15},
{id: 16}];
============================================
const result = [
0/"1-4": [
{id: 1},
{id: 2},
{id: 3},
{id: 4}],
1/"7": [
{id: 7}],
2/"9-10": [
{id: 9},
{id: 10}],
3/"12": [
{id: 12}],
4/"14-16": [
{id: 14},
{id: 15},
{id: 16}]];
【问题讨论】:
-
这是作业吗?
-
否 - 这是大型工作任务的一部分,我在其中生成许多不同的数据,然后将其推送到 lib excelJs 以生成 xlsx 文件(报告)。一切都完成了,但这一刻对我来说很难。简单的 _.groupBy() 即使使用组合键进行分组我认为也是无助的。
标签: javascript ecmascript-6 lodash