代码之家  ›  专栏  ›  技术社区  ›  krishna amarghade

JS生成具有给定数量和幻灯片计数的数组子集

  •  1
  • krishna amarghade  · 技术社区  · 2 年前

    我正在reactJS中创建自定义滑块,我正在为其创建一个函数以生成预期输出,该函数需要 幻灯片项目 (持有数组列表), 滑块计数 (变量名“spliceCount”)及其应包含的项目数 滑动 (变量名称“slideBy”)。

    假设我有一个函数,它具有如下三个属性 阵列、拼接计数和滑动 并根据拼接计数和slideby返回数组的子集。 到目前为止,使用下面的函数,我能够生成如下代码段所示的输出。

    const list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'];
    const spliceCount = 3;
    const slideBy = 2;
    function getSusetofArray(array, splice, slide) {
      const arrayList = [...array];
      const subsetList = [];
       while(arrayList.length > 0) {
        subsetList.push(arrayList.splice(0, splice));
      }
      return subsetList;
    }
    console.log(getSusetofArray(list, spliceCount, slideBy));
    // current output with above function
    [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I'], ['J', 'K']]
    

    然而,在spliceCount和slideBy的帮助下,预期结果需要如下所示

    expected output = [['A', 'B', 'C'], ['C', 'D', 'E'], ['E', 'F', 'G'], ['G', 'H', 'I'], ['I', 'J', 'K'], ['K']]
    
    1 回复  |  直到 2 年前
        1
  •  2
  •   Nina Scholz    2 年前

    您可以使用所需的增量进行迭代 offset 并通过对阵列进行切片 size

    function getSubsetOfArray(array, size, offset) {
        const
            result = [];
            
        for (let i = 0; i < array.length; i += offset) {
            result.push(array.slice(i, i + size));
        }
    
        return result;
    }
    
    console.log(getSubsetOfArray(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'], 3, 2));
    .as-console-wrapper { max-height: 100% !important; top: 0; }