javascript - 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中实现这一点?
解决方案
您可以检查日期以及它们是否具有相同的插槽。
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; }
推荐阅读
- python - 更改嵌套列表中元组的值
- go - 何时以及为什么使用 go 的 atomic 包比较 =,+
- java - java中的Hazelcast Sql查询
- javascript - no_image 的图像滑块无法正常工作
- mysql - 有问题的查询中的“AND title <> 'MySQL'”是否使用全文索引?
- sql - 消息 4861,第 16 层,状态 1,第 1 行,无法打开。操作系统错误代码3(系统找不到指定的路径。)
- python - 在不使用任何浏览器的情况下使用 Selenium
- android - 从firestore中查询具有多个值的字段中的特定值
- spring-boot - Spring 应用程序关闭时的 JMS 会话提交
- java - JPAQuery 的 JUnit 5 单元测试