2016-05-06 15 views
-1

配列内の数値が配列内の特定の数値に加算できるかどうかを確認しようとしています(この場合は配列最大の数字が目標です)。私の思考プロセスは、考えられるすべての組み合わせの配列を作成し、それを繰り返して最大の数がそこにあるかどうかを確認することでした。forループ内の配列に値をプッシュする(別のforループ内)JavaScript

私は配列を作成したすべての組み合わせの配列(addArray関数)を取得するには、results = [0]とし、array1などの配列の各値を繰り返し処理しようとしています。その結果を結果に反映させることができます。したがって、array1を例として使用してください:

結果= [0]とarray1 [0] = 5; 0 + 5が結果にプッシュされます。results = [0、5];結果は[0,5]および配列1 [1] = 7である。 0 + 7と5 + 7が結果にプッシュされるので、results = [0、5、7、12];

これを達成するために、私は、配列が試験さを反復するforループを作成し、その内ループのために、私は結果アレイを反復するforループ別を作成し、その後の和をプッシュ配列内の項目は結果内のすべての項目でテストされ、元の配列の次の項目にループが移動したときに2番目のforループに到達すると、結果配列には、上記の例。

しかし、結果にいくつかの値を入れても、各項目が結果のすべての値に対して反復されていることがわかりますが、動作させるようには見えません。私の問題は、元の配列の次の項目の結果に項目をプッシュしているようです。私の気持ちは、反復処理中の配列にアイテムを押し込むことができないということです。どんな助けでも大歓迎です。

おかげ

var array1 = [5, 7, 16, 1, 2]; 
var array2 = [3, 5, -1, 8, 16]; 
var array3 = [4, 6, 23, 10, 1, 3]; 

var arraySort = function(arr) { 
    arr = arr.sort(function(a, b) { 
     return a - b; 
    }); 
    return arr; 
}; 

var addArray = function(arr) { 
    arr = arraySort(arr); 
    var largest = arr[arr.length - 1]; 
    var results = [0]; 
    //Here's where I am stuck. 
    for (var i = 0; i < arr.length - 1; i++) { 
     for (var j = 0; j < results.length; j++) { 
      results.push(arr[i] + results[j]); 
     } 
    } 
}; 
addArray(array1); 
+0

空の一時的な結果配列を使用し、結果の反復の後にそれを割り当てます。 –

+0

'for'ループをそのまま書いています(中間フィールドの長さテストで)、反復処理中の配列と同じ配列をpushできます。あなたの問題は、間違ったアルゴリズムを使用した場合の可能性が高いです。 – Alnitak

答えて

0

はあなたが無限ループのために増加したresult配列に追加された

var addArray = function(myarr) { 
 
    var arr = myarr.slice(0).sort((a,b)=>a-b); 
 
    var new_results = []; 
 
    var results = [0,5]; 
 
    //Here's where I am stuck. 
 
    for (var i = 0; i < arr.length; i++) { 
 
     for (var j = 0; j < results.length; j++) { 
 
      new_results.push(arr[i] + results[j]); 
 
     } 
 
    } 
 
    return new_results; 
 
}; 
 

 
console.log(addArray([0,1,2]).sort());

、これを試してみてください。結果を格納するには別の配列を使用し、引数として渡される配列をスライスするのが理想的です。

関連する問題