この質問を解決するには2つの異なる関数があります。2異なる結果を持つ配列から要素のペアを見つける方法
しかし、彼らの両方が非常に異なる結果を生成している「の合計与えられた数に等しい配列からの要素のペアを見つけます」。なぜ彼らは同じ結果を生み出していないのですか? 1組は5組、残りの組は6組です。これはなぜですか?
1つはダブルループを使用しています。
export function pairElements(arr, arg) {
var pairArr = arr.slice(); // return a copy of arr
var result=[];
for(var i = 0; i < pairArr.length; i++) {
for(var j = i + 1; j < pairArr.length; j++) {
if(pairArr[i] + pairArr[j] == arg) {
let pair = [pairArr[i], pairArr[j]];
result.push(pair);
}
}
}
return result;
}
pairElements([1,4,2,3,0,5,4,3], 7);
result = [ [4, 3], [4, 3], [2, 5], [3, 4], [4, 3] ];
目は最初のアプローチは、本質的には非常に単純で、まだ正しい方法
function pairReduce(arr, arg) {
var pairArr = arr.slice();
var result=[];
return pairArr.reduce(function (a,b,index){
let pair = [];
let search = arg - b; // get difference of current item so we know what value will sum to arg
let searchIndex = pairArr.indexOf(search);
if (searchIndex != -1 && searchIndex != index){
pair.push(b, search);
result.push(pair);
}
return result;
}, 0);
}
pairReduce([1,4,2,3,0,5,4,3], 7));
result = [ [4, 3], [2, 5], [3, 4], [5, 2], [4, 3], [3, 4] ]
ロジックは全く異なります。どんな運動の目的が明確でないか – charlietfl
私はそれを集める!それでも私の質問には答えません。なぜ5ペアを生産しているのですか?もう1ペアは6ペアです。 –
デバッガを使ってそれを把握してください。 1つは複数のループを持ち、もう1つはまったく異なるものです。あなたはリンゴとオレンジを比較するように私達に求めています – charlietfl