2016-10-27 4 views
0

2つの要素が合計値に等しい回数を検出するこのJS関数があります。私はこれを変更して、2つの要素が合計値と等しいときだけでなく、合計値よりも小さいときに条件を変更しようとしています。それは<=sum - array[i];あるtempインスタンスを占めているように、私はこの条件var temp = sum - array[i];を変更する方法を配列内の2つの要素が合計値以下の回数をカウントする - Javascript

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];が成功しなかった場合のすべての値を保持します。どんな助けもありがとう。

+0

上記の配列が与えられている場合、あなたはあまり必要としない場合の出力は何ですか? –

答えて

1

あなたは非常に畳み込まれた方法でそれをやっています。 2つの配列要素を追加するネストされたループを使用し、それらが合計よりも小さいかどうかをテストします。

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

関連する問題