2017-09-09 5 views
0

私は合計と等しいになる2つの数を足してペアを見つける関数を作成しました。addth on配列を見つける - JS

function findingSum(arr, sum){ 
    var firstElement = []; 
    var difference = []; 
    var final = []; 

    var convertArr = arr.map(function(item){ 
    return parseInt(item, 10); 
    }); 


    for(var i = 0; i < convertArr.length; i++){ 
    difference.push(sum - convertArr[i]); // subtracted sum from each convertArr item 

    if(difference[i] + convertArr[i] === sum){ // check if convertArr item was added to difference item === sum 
     firstElement.push(convertArr[i]); // if so add the convertArritem to the result array 
    } 

    if(firstElement[i] + convertArr[i] == sum){ 
     final.push(firstElement[i], convertArr[i]); 
    } 
} 
    return final; 
} 

var addNumbers = findingSum([3, 34, 4, 12, 5, 2], 9); 
console.log(addNumbers); // --> [4, 5] 

だから何私がやったことは、私がconvertArr[i]の違いとの和を取得し、difference変数に入れしようとしていることです。次に、元の配列からdifference [i]を足して和が得られるかどうかを調べました。もしそうなら、私はfirstElement配列にそれらを追加し、元の配列に各値を追加しようとし、最後にそれらを加算します。したがって、この2つを追加すると合計が得られます。

私のロジックは機能しませんし、firstElementとfinal配列の両方でプッシュしません。誰でもこの手伝いできますか?>

+0

ペア。 –

+0

が最初に見つかりました。 –

+0

そうではありません。 –

答えて

0

訪問した値にハッシュテーブルを使用できます。あなたがそれらを追加したときに合計を買ってあげることを2の

var findingSum = function (array, s) { 
 
    var a, i, 
 
     hash = Object.create(null); 
 

 
    for (i = 0; i < array.length; i++) { 
 
     a = array[i]; 
 
     if (hash[s - a]) { 
 
      return [s - a, a]; 
 
     } 
 
     if (!hash[a]) { 
 
      hash[a] = true; 
 
     } 
 
    } 
 
}; 
 

 
console.log(findingSum([3, 34, 4, 12, 5, 2], 9)); // [4, 5]

+0

鼻血。私はハッシュテーブルLOLの使い方を知らない。 –

関連する問題