2017-11-07 20 views
0

Ubuntuでnodejsを使用しています。私はJavaScript forEach()メソッドのMDNドキュメントを読んできました。私はこれを行う他の方法があることを理解していますが、私はやって学ぶ;私は配列copyarr配列の値のユニークなコレクションにしようとしています。重複はありません。私はこれをforEach()メソッドを使って行いたいと思います。JavaScript forEach()メソッドの混乱

セットアップ:

var arr = [1, 2, 3, 4, 4, 3, 2]; 
var copy = []; 

、なぜこの仕事をしますか?

copy.includes(1); // returns false 

これはありませんが、

arr.forEach(function(element, copy) { 
if (!copy.includes(element)) { 
    copy.push(element); 
} 
}); 

そして、ここでエラーです:

TypeError: copy.includes is not a function 
    at repl:2:11 
    at Array.forEach (native) 
    at repl:1:5 
    at ContextifyScript.Script.runInThisContext (vm.js:23:33) 
    at REPLServer.defaultEval (repl.js:339:29) 
    at bound (domain.js:280:14) 
    at REPLServer.runBound [as eval] (domain.js:293:12) 
    at REPLServer.onLine (repl.js:536:10) 
    at emitOne (events.js:101:20) 
    at REPLServer.emit (events.js:191:7) 
+1

JavaScriptを学ぶのに最適な方法は、Stackoverflowを使うことです。この記事で説明している複製を削除する別の方法もあります。https://stackoverflow.com/questions/9229645/remove-duplicates-from-javascript-array – John

答えて

1

forEachのコールバックの第2引数は、インデックスされ、2番目の引数としてコピーを言及することで、あなたは、インデックスと配列が前に宣言していないを取得しています。だからあなたがしようとしているのは実際には機能ではない0.includesです。 2番目の引数を削除すると問題が解決されます

arr.forEach(function(element) { 
if (!copy.includes(element)) { 
copy.push(element); 
} 
}); 
+1

それはトリックでした。私は今、私がどのようにドキュメントを誤解しているのかを見ています。なぜMDNのドキュメントはnoobsにあまりにも非友好ですか?私は 'forEach()'メソッドについて2時間を過ごしました。 –

3

試してください:forEachのコールバックの

arr.forEach(function(element) { 
if (!copied.includes(element)) { 
    copied.push(element); 
} 
}); 

第二引数がインデックスではなく、あなたが埋めるためにしようとしている配列です。また、copyundefined、正しいコード名はcopiedです。

編集

あなたはforEachのコールバックの第2引数を必要と一体なぜあなたはアレイとのforeachコールバックの第2引数(の名前copyの両方を使用してコードを編集した後 - どの方法によっては - 、インデックスではありません"コピー" - あなたが意味するどんなコピー:P)。

Number.prototypeには、includes()というメソッドがありません。これは、インデックスがNumberであるためです。

要約すると:

arr.forEach(function(element) { 
if (!copy.includes(element)) { 
    copy.push(element); 
} 
}); 
+0

編集をご覧ください。一意の値の配列は常に 'copy'と呼ばれます。それは私の編集エラーでした。謝罪いたします。 –

+1

2つの変数の名前はまったく同じです。 forEachコールバックの第2引数を 'copy'コールすることはできません。 –

+2

@SeanValdivia問題は解決していません。明白な理由がないのにここに 'コピ​​ー 'があります:' function(element、copy)<---- ' – JLRishe