配列のグループ全体で最初の共通要素を見つける必要があります。配列の数はさまざまですが、それらは常に順番に(小さい→大きい)順番に並んでいます。私の配列はすべてmyObjのプロパティです。Javascriptの複数の配列にまたがる共通の要素
function compare(myObj,v,j) {
if (myObj[j].indexOf(v)>-1) return true;
else return false;
}
function leastCommon ([1,5]) {
var myObj = { //This is filled by code, but the finished result looks like this
1: [1, 2,...,60,...10k]
2: [2, 4,...,60,...20k]
3: [3, 6,...,60,...30k]
4: [4, 8,...,60,...40k]
5: [5,10,...,60,...50k]
};
var key = [1,2,3,4,5]; //also filled by code
var lcm = myObj[key[key.length-1]].forEach(function(v) { //Iterate through last/largest multiple array
var j=key[key.length-2];
while (j>=0) {
if (compare(myObj,v,j)) { //check to see if it is in the next lower array, if yes, check the next one.
j--;
}
if (j>0 && (compare(myObj,v,j+1))===true) return v; //before the loop exits, return the match
}
});
return lcm;
}
私が間違っているかわからないんだけど、それは未定義戻っている:
これは私がこれまで持っているものです。
注:forEachは未定義を返し、コードを修正しようとしましたが、私のエディタから "潜在的な無限ループ"エラーが発生します。変更されたコードは次のようになります。
function leastCommon ([1,5]) {
var myObj = { //This is filled by code, but the finished result looks like this
1: [1, 2,...,60,...10k]
2: [2, 4,...,60,...20k]
3: [3, 6,...,60,...30k]
4: [4, 8,...,60,...40k]
5: [5,10,...,60,...50k]
};
var key = [1,2,3,4,5]; //also filled by code
var lcm = 0;
myObj[key[key.length-1]].forEach(function(v) { //Iterate through last/largest multiple array
var j=key[key.length-2];
while (j>=0) {
if (compare(myObj,v,j)) { //check to see if it is in the next lower array, if yes, check the next one.
j--;
}
if (j>0 && (compare(myObj,v,j+1))===true) lcm = v; //before the loop exits, set lcm = v
}
});
return lcm;
}
いくつかの例と必要な結果を追加してください。 –
@Nina Scholz私は、2つの数字のうちの最小公倍数と、それらの間のすべての数字を見つけることを任されてきました。だから、私は、各番号の倍数の配列を作成し、すべての配列で共通の最初の倍数を見つけなければならないと決めました。例:input = 1-5;結果は60になります。 – Pi10tSec