将项目插入2D数组



我正在解决一个算法(不想解释我的方法,因为我仍然试图自己解决它)。然而,我对一个特定的部分有困难。

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的每个索引的所有倍数推入外部数组。这样我就得到了一个二维数组包含了所有的rangeArray的倍数在不同的数组中对于j的每次迭代

例如,不要以

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

我将把所有1的倍数(不超过100)放入一个数组然后将所有2的倍数放入另一个数组,以此类推,所以它看起来是这样的。

outerArray == [[1,2,3,4...] [2,4,6,8...] [3,6,9,12...]] 
这很难解释,希望我已经说清楚了。谢谢。

理解你的问题是不可能的,但你明智地描述了你试图生成的输出…

事实证明,这很简单:

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);

每个多重数组中应该有多少个元素?我猜是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]);

相关内容

  • 没有找到相关文章