이 질문을 해결하는 두 가지 다른 기능이 있습니다.다른 결과를 가진 배열에서 한 쌍의 요소를 찾는 방법
하지만 모두 매우 다른 결과를 생산하는 "합 소정 수와 동일한 배열의 요소의 쌍을 찾기". 왜 그들은 같은 결과를 내고 있지 않습니까? 하나는 5 쌍, 다른 하나는 6 쌍입니다.
하나는 이중 루프를 사용합니다.
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 쌍을 생산하고 다른 한 쌍은 6 쌍을 생산합니까? –
디버거를 사용하여 파악하십시오. 하나는 다중 루프를 가지고, 다른 하나는 완전히 다른 것을합니다. 우리는 사과와 오렌지를 비교해달라고 요청합니다 – charlietfl