首页 > 解决方案 > javascript中的自定义数组块

问题描述

我有一个数组,按升序存储几个月的天数,如下所示:

const arr = [1, 2, 3, 4, 5, 6, 8, 13, 16, 19, 31, 1, 2]

需要将此输入与日期范围 (1-10)、(11-20) 和 (20-31) 进行分组,预期输出将是:

output = [[1,2,3,4,5,6,8],[13,16,19],[31],[1,2]]

请帮助如何在Javascript中实现这一点?

标签: javascript

解决方案


您可以检查日期以及它们是否具有相同的插槽。

const slot = n => n < 11 ? 0 : n < 21 ? 1 : 2;
var array = [1, 2, 3, 4, 5, 6, 8, 13, 16, 19, 31, 1, 2],
    result = array.reduce((r, v, i, { [i - 1]: last }) => {
        if (last < v && slot(last) === slot(v)) r[r.length - 1].push(v);
        else r.push([v]);
        return r;
    }, []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读