javascript - 如何在 JavaScript 中创建窗口化的数组切片?
问题描述
我正在寻找一个名为的数组方法实现Array.window(n)
,它在带有参数的数组上调用n
,会给出一个连续的重叠数组切片。
例子:
let a = [1, 2, 3, 4, 5, 6]
a.window(2) // [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]
a.window(3) // [[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]]
a.window(4) // [[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6]]
a.window(10)// []
我怎样才能做到这一点?
解决方案
在这里,您将使用一个使用数组函数的稍短的示例:
let a = [1, 2, 3, 4, 5, 6];
function windowedSlice(arr, size) {
let result = [];
arr.some((el, i) => {
if (i + size > arr.length) return true;
result.push(arr.slice(i, i + size));
});
return result;
}
console.log(windowedSlice(a, 2));
console.log(windowedSlice(a, 3));
console.log(windowedSlice(a, 4));
console.log(windowedSlice(a, 5));
推荐阅读
- python - Python 列表中的最后一个元素使用 Python C API 损坏
- c++ - 为什么我必须在这段代码中添加一个新变量
- node.js - 在 React 本机应用程序上,如何从后端获取每个事件示例的更新,例如下达新订单
- android - 即使任务死亡,有什么方法可以将 AlarmManager 保留在 android 中?
- scala - 如何为 Zeppelin 的 spark 解释器添加 Delta Lake 支持?
- python - 简单的封闭式自定义损失函数不起作用
- c# - Json.NET:不能反序列化JSON,如果指定类型的基类是“PropertyChangedBase”
- java - 使用随机数的 Java GUI 绘制树
- r - 尝试使用并行时,R 中的 %dopar% 无法正常工作
- python - 没有这样的文件或目录:“google_news_vectors.bin”