将项目插入2D数组

时间:2016-09-22 20:07:53

标签: javascript arrays algorithm multidimensional-array

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

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]中的项目,并尝试将EACH索引的所有倍数(从1到100)插入到DIFFERENT数组中。但是我的代码目前正在将每个数字推送到每个数字的自身数组中。我需要它将rangeArray的每个索引的所有倍数推送到外部数组。因此,对于j的每次迭代,我最终得到了不同数组中rangeArray的所有倍数的2D数组。

例如,而不是以

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

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

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

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

2 个答案:

答案 0 :(得分:0)

理解你的问题是不可能的,但明智的是你已经描述了你想要产生的输出......

事实证明,这很简单:

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

答案 1 :(得分:0)

每个多个数组中应该有多少个元素?我猜100但你可以相应调整......

&#13;
&#13;
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]);
&#13;
&#13;
&#13;