我正在解决一个算法(不想解释我的方法,因为我仍然试图自己解决它)。然而,我对一个特定的部分有困难。
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]);