52枚のカードのデッキを作成しようとしています。私はそれを二重forループで簡単に作成できますが、複雑さはO(n2)です。だから、私はmap()とforEach()配列メソッドを使って遊んでいましたが、物事を返す必要があるものは複雑です。以下は私のコードです。Forループ、マップ、forEach Javascript
(function deckCreate() {
var values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
var suits = ["clubs", "diamonds", "hearts", "spades"];
var newDeck = values.map(function(xValue) {
suits.forEach(function(xSuit) {
return [xSuit,xValue];
});
});
return newDeck;
}());
それは長さ13内のすべての未定義の配列を与えます。私はmap()の前にforEach()をスワップしようとしましたが、結果は同じでした。
これらの機能の中でconsole.log()が見つかった問題は、要素が互いにマップされていないが、すべて別々に印刷されていることでした。何が問題なのでしょうか?
をスクリプトの実行のスピードを上げるためにあなたの目標ですか? – sinisake
'.forEach'が何も返さないため、' undefined'となっています。それを '.map'に変更し、その行の先頭に' return'を置くと正しく動作します。私が驚いているのは、これまで1ミリ秒以上かかる場合でした。 – DonovanM
@sinisake nahはネストされたfor-loopsではなく新しいやり方を学ぼうとしています – Jamie