2016-10-05 11 views
2

現在、freecodecampサイトのjavascript部分の演習でImが動作しています。なぜ、特定のメソッドがそれを解決するために働いたのかを理解しようとしています。Line in Freecodecamp

function nextInLine(arr, item) { 
    // Your code here 
    arr.push(item); 
    var firstItem = arr.shift(arr); 
    return firstItem; // Change this line 
} 

私は最初に変数firstItemを作成しなければならなかった理由を理解しようとしていますか?この運動を解決するために私ができる別の方法がありますか?もしそうなら、それをどのように解決したか教えてください。スタックオーバーフローへ

+0

シフトが配列に対して行うことをお読みになることをお勧めします。 – Eric

+0

'firstItem'を作成する必要はありません。あなたは単にarr.shift()を返すことができます。したがって、 'arr.push'は配列の最後に項目を追加し、' shift'は配列の先頭にある項目を削除します。 –

+1

はい、あなたは 'return arr.shift(arr);を実行している可能性があります。 – Makyen

答えて

1

ようこそ:)

私はまた、無料のコードキャンプフロントエンド認証を行っの一環として、この作業を経てきました。

https://www.freecodecamp.com/challenges/stand-in-line引数として配列(arr)及び数 (item)をとる関数nextInLineを書く:参考のために、これは課題です。番号を配列の末尾に追加し、次に 配列の最初の要素を削除します。 nextInLine関数は、次に削除された要素を返します。

ソリューションが望ましい結果をもたらす一方で、変数(firstItem)を宣言せずにこのタスクを解決することができます。私はここであなたのための説明を用意し、デモました:http://codepen.io/PiotrBerebecki/pen/xEYbgv

重要な事はそれを理解することです:

シフト()メソッドは、配列からリターンを最初の要素を削除します その要素。このメソッドは、配列の長さを変更します。アウトと https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/shift

function nextInLine(arr, item) { 

    // arr is now: [5,6,7,8,9] 
    arr.push(item); // add 10 to the and of array 
    // arr is now: [5,6,7,8,9,10] 

    return arr.shift(); // remove first element of arr (5) 
         // and then return this first element (5), 
         // arr is now [6,7,8,9,10] 
} 

var testArr = [5,6,7,8,9]; 

console.log(nextInLine(testArr, 10)); // 5 
console.log("After: " + JSON.stringify(testArr)); // After: [6,7,8,9,10] 
+0

Alexander、私は 'arr.shift()'を返すことで、1)最初の要素を取り除き、2)関数から戻す方法の解説を更新しました。何かを追加したいのですか、それともあなたの質問に答えますか? –

0

return arr.shift(arr);

0

.shift関数は引数を使用していません返すように変数を宣言。配列の最初の要素を1つずつ削除します。
ここに正しいコードがあります。

function nextInLine(arr, item) { 
    arr.push(item); 
    var remove=arr.shift(); 
} 
関連する問題