2017-01-02 8 views
-2

入力に基づいて配列から特定の数の要素を削除する関数を記述しようとしています。下のコードでわかるように、配列をスプライスして新しい配列を返すことを選択しています。JavaScript Array.prototype.splice()使用法

function slasher(arr, howMany) { 


    var newArray = arr.splice(0, howMany); 

    return newArray; 
} 

slasher([1, 2, 3], 2); 

しかし、コンソールが私に[1]、[2]のテストの出力を与える:私はここで私が今持っているコードがあるhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

でこれについて読みました。

私はMozillaで読んだドキュメントに基づいて[3]の出力を期待していました。

更新:コメントを読んだ後、スプライス()が実際に達成していることを誤解していることがわかりました。

+4

* *を見てください「私はの出力は、[3]私はMozillaので読むのドキュメントに基づいて期待していました。」再度ドキュメンテーションを読んでください。 ''返り値:削除された要素を含む配列」* '1'と' 2'を削除したので、 '[1,2]'を返すようになりました値。あなたはそれが保持された要素を持つ新しい配列を返すということをどこで読んだのですか? –

+3

元の配列 'return arr'を返します。 'var newArray ='は必要ありません。 – guest271314

+0

@FelixKlingありがとう、私はドキュメントを読んだが、私は誤解した。彼らは私が予想していたように見せかける例を与えました。 arrを返すようにコードを変更したとき。出来た。ありがとう。 – davidtaylorjr

答えて

2

あなたは少しコードを変更する必要が期待していた出力を達成するために。

.splice()関数は、削除された要素を返します。hereと表示されています。

あなたは、このようにコードを修正期待していた動作を取得するには:

function slasher(arr, howMany) { 
    arr.splice(0, howMany); 
    return arr; 
} 

slasher([1, 2, 3], 2); 
1

spliceは、配列から削除された要素を返しますが、元の配列は変更されます。

+0

私は今それを実現します。ドキュメンテーションは、例の中で起こっていたことを私が誤解したように言い表されました。 – davidtaylorjr

0

コメントを読んだ後、私はエラーを認識しました。出力の返信要求を

return arr; 

に変更すると、コードは正常に動作します。

完全に動作するコードは次のとおりです。

function slasher(arr, howMany) { 


    var newArray = arr.splice(0, howMany); 

    return arr; 
} 
+3

新しい配列ではなく元の配列を返すことに注意してください。 –

+1

新しい変数宣言の必要はありません。私の解決策で見ることができるように、引数として得られる配列で作業することができます。 – kkreft

+0

新しいvarを削除すると、正しく機能しなくなりました。 – davidtaylorjr

関連する問題