【问题标题】:Inserting items into a 2D array将项目插入二维数组
【发布时间】:2016-09-22 20:07:53
【问题描述】:

我正在解决一种算法(不想解释我的方法,因为我仍在尝试自己解决它)。但是我在某个特定部分遇到了困难。

function smallestCommons(arr)
{
  var rangeArray = [];
  var outterArray = [];
  var testArray = [];

  arr = arr.sort(function(a,b){return a>b});

  for(var i=arr[0];i<=arr[1];i++)
  {
    rangeArray.push(i);
  }
  for(var j=0;j<rangeArray.length;j++)
  {
    for(var k=1;k<=100;k++)
    {
      if(k%rangeArray[j] === 0)
      {
        outterArray.push([k]);
      }
    }
  } 
  console.log(outterArray);
}

smallestCommons([1,5]);

代码的第二部分我循环遍历 rangeArray [1,2,3,4,5] 中的项目,并尝试将每个索引的所有倍数(从 1 到 100)插入到不同的数组中。但是我的代码目前正在将每个数字推入其自己的数组中,每个数字都是倍数。我需要它将 rangeArray 的每个索引的所有倍数推入外部数组。因此,对于 j 的每次迭代,我最终都会在不同数组中得到一个包含 rangeArray 的所有倍数的二维数组。

例如,而不是以

结尾
outerArray == [[1],[2],[3]...]

我最终会将 1 的所有倍数(最多 100)放入一个数组中,然后将 2 的所有倍数放入另一个数组中,依此类推,看起来像这样。

outerArray == [[1,2,3,4...] [2,4,6,8...] [3,6,9,12...]] 

这很难解释,希望我已经清楚了。谢谢。

【问题讨论】:

    标签: javascript arrays algorithm multidimensional-array


    【解决方案1】:

    很难理解您的问题,但明智的是,您已经描述了您尝试生成的输出...

    原来,这很简单:

    let arr = [];
    for(let i = 1; i <= 100; i++) {
      let innerArr = [];
      for(let j = i; j <= 100; j += i) {
        innerArr.push(j);
      }
      arr.push(innerArr);
    }
    
    console.log(arr);

    【讨论】:

    • 感谢帮助。使用 let 代替 var 有什么特别的原因吗?
    • @mattHunting10 - 经验法则,永远不要使用var,它实际上已经过时了。
    • 真的吗?你能解释一下吗,我不知道。
    • @mattHunting10 - 这太宽泛了。阅读let...
    【解决方案2】:

    每个多重数组应该有多少个元素?我猜是 100,但你可以相应地调整它...

    function smallestCommons(arr)
    {
      var rangeArray = [];
      var outterArray = [];
      var testArray = [];
    
      arr = arr.sort(function(a,b){return a>b});
    
      for(var i=arr[0];i<=arr[1];i++)
      {
        rangeArray.push(i);
      }
      for(var j=0;j<rangeArray.length;j++)
      {
        for(var k=1;k<=100;k++)
        {
          if(k%rangeArray[j] === 0)
          {
            var multipleArray = [];
            for(var z=1;z<100;z++) {
              multipleArray.push(z*k);
              }
            outterArray.push(multipleArray);
          }
        }
      } 
      console.log(outterArray);
    }
    
    smallestCommons([1,5]);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      • 2015-07-28
      • 2011-06-06
      • 2016-03-13
      • 2017-01-26
      • 2021-02-06
      相关资源
      最近更新 更多