2017-05-22 12 views
-4

指定されたインデックスの要素まで、すべての要素を含む配列を返す関数を作成しています。配列逆順取得

function getElementsUpTo(array, n) { 
     var output = []; 
     for (var i=n; i < array.length; i++){ 
     output.push(array[i]); 
     } 
     return output; 
    } 

    var output = getElementsUpTo(['a', 'b', 'c', 'd', 'e'], 3) 
    console.log(output); // --> must be['a', 'b', 'c'] but its displaying [c, d, e] 

あなたはそれが[ 'A'、 'B'、 'C​​']が、その表示[C、D、E]を返す必要があります見ることができるように。

+1

'var i = n;私は deceze

+2

FWIW:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice – deceze

+0

この質問のタイトルは非常に意味のないものです –

答えて

3

なぜJavaScriptを使用しないのですか?非常に便利です。

あなたの開始インデックスは「n」です。つまり、ここで間違っていることが非常に明確です。あなたはあなたのための開始点としてのnを使用している スライス法を使用して、あなたのロジック

function getElementsUpTo(array, n) { 
     var output = []; 
     for (var i=0; i < n; i++){ 
     output.push(array[i]); 
     } 
     return output; 
    } 

    var output = getElementsUpTo(['a', 'b', 'c', 'd', 'e'], 3) 
    console.log(output); 

を使用して、それが

arr = ['a','b','c','d','e'] 
var output = arr.slice(0,3) 

同じ出力を行うために、より簡単ですが、唯一の2行

1

アレイの先頭から開始するのではなく、停止する必要がある位置から開始しました。

for (var i=n; i < array.length; i++){ // ... rest of code 

あなたの関数は、最初のn番目の要素を返すようだ:また、あなたはn個

function getElementsUpTo(array, n) { 
     var output = []; 
     for (var i=0; i < n; i++){ //need to start at index 0, and stop at index n-1 
     output.push(array[i]); 
     } 
     return output; 
    } 

    var output = getElementsUpTo(['a', 'b', 'c', 'd', 'e'], 3) 
    console.log(output); // --> ['a', 'b', 'c'] 
1

主犯前のインデックスで停止する必要があることは、このラインです。したがってインデックスは最初から0になる必要があります。ループ条件はi < nであり、ループがn番目のループで停止するようにする必要があります。これは、最後のループは(n - 1)番目のループになることを意味します。なぜなら、とにかく0で始まるからです。最終的なコードは次のようになります:

for (var i = 0; i < n; i++){ 
+0

* "主な原因はこの行です" * - 主な原因は?唯一の犯人か? – nnnnnn

1

読書 何をしたいと思う何かがのように見ている。今後の参考のために

function getElementsUpTo(array, n) { 
     var output = []; 
     for (var i=0; i < n; i++){ 
     output.push(array[i]); 
     } 
     return output; 
    } 

1)配列項目[0]配列から始まり、配列[長さ-1]に上がる

2)あなたがそこに置いた '私'は配列のその場所にアイテムを取得します。

ie:あなたの場合は配列[0] => 'a'です。

したがって、i = nで始めると、配列は位置nで開始するように指示され、i> array.lengthは終了まで継続するように指示します。 (array [array.length]は、配列が1ではなく0から始まるので、範囲外のエラーをスローすることに注意してください)。

関連する問題