我正在努力解决一个算法(不想解释我的方法,因为我仍然试图自己解决它)。但是我对某个特定部分有困难。
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...]]
很难解释,希望我已经清楚了。感谢。
答案 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但你可以相应调整......
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;