質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

1315閲覧

forの中身をもっと簡潔に書く方法は?

liflect

総合スコア14

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/06/15 12:42

下のコードで同じものを二回書いている部分がちょっと冗長なので、もっと簡潔に書きたいのですが、簡潔になりますでしょうか?

javascript

1let digit = digitDecide(); 2console.log(digit); 3 4function digitDecide(){ 5 let digit = []; 6 let indec = 0; 7 let digitNumber; 8 for(let i = 1;i <= 4;i++){ 9 digitNumber = 1; 10 for(let j = 0;j < i;j++){ 11 digit[indec++] = digitNumber++; 12 } 13 digitNumber = 1; 14 for(let j = 0;j < i;j++){ 15 digit[indec++] = digitNumber++; 16 }//同じものを二回書いている。 17 } 18 return digit; 19}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

コード

解決したようですが、まだ最適化の余地はあるように思います。

JavaScript

1function digitDecide2 (length) { 2 const digit = [], 3 baseDigit = []; 4 5 for (let i = 1, max = length + 1; i < max; ++i) { 6 baseDigit.push(i); 7 8 digit.push(...baseDigit, ...baseDigit); 9 } 10 11 return digit; 12} 13 14console.log(JSON.stringify(digitDecide2(4))); // [1,1,1,2,1,2,1,2,3,1,2,3,1,2,3,4,1,2,3,4]

更新履歴

  • 2018/06/16 10:08 Array#slice を削除("..." で展開している為、不要でした)

Re: liflect さん

投稿2018/06/16 00:21

編集2018/06/16 05:43
think49

総合スコア18166

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2018/06/16 04:33

主題とは関係ないですが、「Arrat」「スプレッド要素」が気になります。「で展開」につながるので「スプレッド構文」「スプレッド」とかでは?
think49

2018/06/16 05:44

ご指摘ありがとうございます。修正しました。 スプレッド要素は配列の要素限定の用語ですね、調査不足でした。
guest

0

for(let k=0; k<2; k++){ ~~ }で囲めば良いのでは?

投稿2018/06/15 12:55

otn

総合スコア84708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

liflect

2018/06/15 13:53

確かにそれでよかったですね。
guest

0

ベストアンサー

とりあえず繰り返し部分をforで回せば記述は1回ですみますね

javascript

1function digitDecide(){ 2 let digit = []; 3 let indec = 0; 4 let digitNumber; 5 for(let i = 1;i <= 4;i++){ 6 for(let j=0;j<=1;j++){ 7 digitNumber = 1; 8 for(let k = 0;k < i;k++){ 9 digit[indec++] = digitNumber++; 10 } 11 } 12 } 13 return digit; 14}

投稿2018/06/15 12:52

yambejp

総合スコア114968

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

liflect

2018/06/15 13:56

そうですね、たった二回の繰り返しにforを使うことはそんなになかったので、思い付きませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問