2016-10-27 2 views
0

이 JS 함수는 두 요소가 합계 값과 같은 횟수를 찾습니다. 두 개의 요소가 합계와 같을 때뿐만 아니라 합계 값보다 작은 경우에도 조건을 수정할 수 있도록이 값을 수정하려고합니다.배열의 두 요소가 합계 값보다 작거나 같음 횟수 - 자바 스크립트

var array = [-10, -8, -1, 0, 1, 6, 10]; 
var sum = 16; 

function findLessThanOrEqualSum(array, sum){ 
    var count = 0; 
    var map = {}; 
    for(var i = 0; i<array.length; i++){ 
    var temp = sum - array[i]; //This right here only accounts for when two elements = sum 

    if(temp >= 0 && map[temp]){ 
     console.log(sum + " " + array[i] + " " + temp); 
     count++; 
    } 
    map[array[i]] = true; 
    } 
    console.log(count); 
} 

findLessThanOrEqualSum(array, sum); 

가 어떻게 그것을 temp<=sum - array[i]; 인 인스턴스를 차지하는만큼이 조건 var temp = sum - array[i];을 바꿀 것 ?

두 번째 temp 변수를 할당하려고 시도했지만 temp <= sum - array[i]; 일 때 모든 값을 포함하지만 성공하지 못했습니다. 어떤 도움을 주시면 감사하겠습니다.

+0

위의 배열이 주어지면 적은 수로도 출력하려면 어떻게 될까요? –

답변

1

당신은 매우 복잡하게하고 있습니다. 두 개의 배열 요소를 추가하는 중첩 루프를 사용하고 합계보다 작은 지 테스트하십시오.

var array = [-10, -8, -1, 0, 1, 6, 10, 11, 8, 9]; 
 
var sum = 16; 
 

 
function findLessThanOrEqualSum(array, sum) { 
 
    var count = 0; 
 
    for (var i = 0; i < array.length - 1; i++) { 
 
    for (var j = i + 1; j < array.length; j++) { 
 
     if (array[i] + array[j] < sum) { 
 
     console.log(sum + " " + array[i] + " " + array[j]); 
 
     count++; 
 
     } 
 
    } 
 
    } 
 
    console.log(count); 
 
} 
 

 
findLessThanOrEqualSum(array, sum);

당신이 map에서 특정 키를 찾을 수 있기 때문에 당신이 그것을하고있는 방법은 동일한 조건 일

. 그러나 비교 조건이있을 때 찾아야 할 구체적인 사항은 없습니다.

+0

정말 고마워요. 이 작동합니다. – RJK