代码之家  ›  专栏  ›  技术社区  ›  rlaxluver12s

如何将数组按n和递减整数的数目(n-1)分组?输出是数组的总数

  •  1
  • rlaxluver12s  · 技术社区  · 2 年前

    例如,这是输入数组: [2, 1, 4, 4, 3]

    从这个阵列中, n-1 模式将从左到右建立。

    这个输出就是数字 7 因为分组后存在以下单独的数组:

    [2] [1] [4] [4] [3] -1组( N )

    [4, 3] -1组( n-1 )

    [2, 1] -1组( n-1 )

    输出: 7. (阵列)

    到目前为止,这是我开始做的,但看起来我只是把所有的事情总结在一起。

    let numbers = [2, 1, 4, 4, 3];
    let sum = numbers.reduce(function (previousValue, currentValue) {
        return previousValue + currentValue;
    });
    
    console.log(sum);
    

    如果能以JavaScript提供解决方案和解释,我们将不胜感激。非常感谢。

    1 回复  |  直到 2 年前
        1
  •  0
  •   Octavia Sima    2 年前

    脚本:

    function myFunction() {
      let numbers = [2, 1, 4, 4, 3];
      // remove duplicates
      let unique = [...new Set(numbers)];
      // get length of unique array, then add to the length of filtered unique array where it also contains n-1
      console.log(unique.length + unique.filter(number => numbers.includes(number - 1)).length);
    }
    

    获取唯一元素的数量,然后将其添加到过滤后的唯一数组的长度中,该数组也包含 n-1 .

    输出:

    output

    如果要获取阵列,请执行以下操作:

    function myFunction() {
      let numbers = [2, 1, 4, 4, 3];
      let unique = [...new Set(numbers)];
      var arrays = [];
      unique.forEach(number => {
        arrays.push([number]); 
        if(numbers.includes(number - 1))
          arrays.push([number, number-1])
      });
    
      console.log(arrays.length)
      console.log(arrays)
    }
    

    output2