javascript - 创建特定范围值内的动态数组

标签 javascript arrays ecmascript-6

我正在尝试找到生成具有以下输出的数组的最佳方法:

[135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 275, 276, 277 , 278, 279, 280, 281, 282, 283, 284, 285, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 675, 676, 677, 678, 679, 700, 701, 702, 703, 704, 705 ...

如您所见,它有一组限制,范围为 140 - 280 - 420 - 560 - 700(每个值加 148) 然后每个值都有一个负 5 和正 5 的区间。

我已经尝试过这种方法

scrollFrom =  Array.from(Array(bytesIndexTo).keys()).map(i => 140 + i * 140);

这让我返回:

[140, 280, 420, 560, 700, ...

但是我还需要正负 5 个值间隔...

我还注意到它使用了很多资源。

        const prev = [
            [135,136,137,138,139],
            [275,276,277,278,279],
        ];

        const after = [
            [141,142,143,144,145],
            [281,282,283,284,285],
        ];

        for (let i = 0; i < scrollFrom.length; i++) {

            scrollFrom.push( scrollFrom[i] );

        }

这个数组的目的是拥有一组值来帮助我识别某个滚动位置以便执行函数,添加这个间隔将帮助我计算滚动位置,即使用户滚动快速地。

也许我可以加载 .json 中的值并加载它们?

你觉得怎么样?提前致谢

最佳答案

创建中心值数组(例如 [140, 280, 420, 560, 700])后,您可以使用 flatMap 迭代每个项目并构造另一个包含其下方和上方 5 个值的数组:

const bytesIndexTo = 4;
const result = Array.from(
  { length: bytesIndexTo },
  (_, i) => (i + 1) * 140
)
  .flatMap(num => Array.from(
    { length: 11 },
    (_, j) => num - 5 + j
  ));
console.log(result);

关于javascript - 创建特定范围值内的动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60794920/

相关文章:

javascript - 如何访问 kendo-UI 函数中的 javascript 变量?

php - MySQL 表没有从 PHP 数组中获取所有值

javascript - reselect如何影响组件的渲染

javascript - 平面数组到深层嵌套对象数组

javascript - document.addEventListener 与 $(document).on

javascript - 禁用检查更改时的文本框

javascript - 如何重置为原始值?

javascript - 调试 IE 错误预期对象

arrays - Swift-每次按下保存按钮时如何将下一个索引添加到数组列表中

javascript - 将 HTML Collection 中的值存储在数组中?