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

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

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

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

Q&A

解決済

2回答

2311閲覧

日付データを自動的に生成して配列の中に格納したい

haruniku

総合スコア527

JavaScript

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

0グッド

1クリップ

投稿2019/07/07 07:24

編集2019/07/09 13:49

いつもお世話になってます。
javascript初心者です。

下記の2次元配列があリます。
dataArray変数の中には6/1~7/31までの日付データが格納されてます。
現在のやり方だと配列の中に1個ずつ手入力で書いていかないといけないので非常に面倒です。

javascript

1 var dataArray=[ 2["2019/06/01","2019/06/02","2019/06/03","2019/06/04","2019/06/05","2019/06/06","2019/06/07","2019/06/08","2019/06/09","2019/06/10","2019/06/11","2019/06/12","2019/06/13","2019/06/14","2019/06/15","2019/06/16","2019/06/17","2019/06/18","2019/06/19","2019/06/20","2019/06/21","2019/06/22","2019/06/23","2019/06/24","2019/06/25","2019/06/26","2019/06/27","2019/06/28","2019/06/29","2019/06/30"], 3["2019/07/01","2019/07/02","2019/07/03","2019/07/04","2019/07/05","2019/07/06","2019/07/07","2019/07/08","2019/07/09","2019/07/10","2019/07/11","2019/07/12","2019/07/13","2019/07/14","2019/07/15","2019/07/16","2019/07/17","2019/07/18","2019/07/19","2019/07/20","2019/07/21","2019/07/22","2019/07/23","2019/07/24","2019/07/25","2019/07/26","2019/07/27","2019/07/28","2019/07/29","2019/07/30","2019/07/31"] 4];

今回、やりたいことはdataArray変数の中にある日付データを自動的に生成していきたいです。
ただ、検索してみても詳しい方法が書かれてなかったのでこの場を借りて質問させて頂きました。
ご教示の程、よろしくお願いします。

※追記
まず、「現在日付」を取得するコードを作成してみました。そのあと、6/1~7/31を表示させる処理を模索中です。

javascript

1 //本日の日付を取得している 2 var date = new Date("2019/06/01"); 3 4 //2019/06/01~2019/06/30までの日付を繰り返し表示させる処理 5 for(var i=1; i < 30; i++){ 6 //年を取得 7 var year = date.getFullYear(); 8 //月を取得 9 var month = date.getMonth()+1; 10 //もし、左辺が右辺より小さい場合、文字列の0をたす 11 if(month < 10){ 12 month = "0" + month; 13 } 14 //日を取得 15 var day = date.getDate(); 16 //もし、左辺が右辺より小さい場合、文字列の0をたす 17 if(day < 10){ 18 day = "0" + day; 19 } 20 console.log(year + "年" + month + "月" + day + "日"); 21 }

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

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

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

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

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

kei344

2019/07/07 07:37

ご自身で試されたコードを質問文に追記し、「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを具体的に追記されたほうが回答が望めると思います。
退会済みユーザー

退会済みユーザー

2019/07/07 07:52

何を検索したんですかね
think49

2019/07/07 08:08

「やりたいこと」の「自動的に生成」で「日付の範囲」も具体的でないので詳しく書いた方が良いと思います。
haruniku

2019/07/07 08:11

失礼しました。 出力する日付の範囲は6/1~7/31で考えてます。
think49

2019/07/07 08:14

実行日が9月や10月であっても、「6/1~7/31」の固定でいいんですね?
haruniku

2019/07/07 08:19

はい、今のところは固定で考えてます。わかりづらくてすみません。
退会済みユーザー

退会済みユーザー

2019/07/07 08:25

そもそもですが、書かれたコードの動き、ご自身で把握されてます?
m.ts10806

2019/07/07 08:42

このタイトルには何も要件が含まれていません。次にJavaScriptについて質問するときに同じタイトルで行く気ですか?それで自身や他の人がなにが問題だったかわかりますか? タグにあること、「教えて」などは誰にも何も要件は伝わりませんよ。 それなりに回答してきてるなら質問に求められることは分かることではないでしょうか。
haruniku

2019/07/07 08:44

失礼しました。タイトルの付け方気をつけます。
think49

2019/07/07 09:16

Zuishin さんのコメント欄では「自分の力で納得するコードを書きたいようです。」と勝手に想像で書きましたが、この辺りの「事情」もあるなら質問文に追記して下さい。 前質問の「コード回答が寄せられて、時間的都合で~さんにサポートしてもらいます」という悲劇は繰り返さないでください。
think49

2019/07/07 09:17

「その前にこのコードが意図通りに動くかどうか確かめてください」に反応がないのも気になりました。
haruniku

2019/07/07 10:08 編集

失礼しました。回答頂いたコードをconsole上で検証したところ意図通りに動いてます。
think49

2019/07/07 10:18

返信すべき相手が間違っているように思います。 その回答で解決したのなら、BAを選びましょう。 解決しないのなら理由を書きましょう。必要なら質問文に要件を追加しましょう。
Zuishin

2019/07/07 10:33

私の回答の後に何度も質問を編集されているようですが、それでもなお、なぜ質問したのか、何が聞きたいのかが全くわかりません。 > 検索してみても詳しい方法が書かれてなかったので ということですが、いったい何を検索しているんでしょうか? 詳しい方法って何ですか?
Zuishin

2019/07/07 10:42 編集

アルゴリズムは非常に簡単です。月末日を求め、1 からその日までの数値を年月と合わせて文字列にし、配列に入れるだけです。これに関しては調べるまでもないと思います。 編集された質問を見たところ、月末日の求め方も文字列化の方法もわかっているようで、関数の作り方・呼び出し方とループがわかっていないように見えます。 となれば具体的な方法を調べる段階ではなく、まず基礎を学ぶべきだと思います。関数の作り方・呼び出し方、ループは何を作るにしても必ず要るもので、これを飛ばしていくことはできません。 https://teratail.com/questions/195152#reply-289400
think49

2019/07/07 11:49 編集

おそらく、「何が分からないか」をはっきり把握していない為に、Zuishin さんの質問に答えられないのではないでしょうか。 yukke_ さんの質問にはどうでしょう? 自分が書いたコードの意味を自信をもって説明できますか?
haruniku

2019/07/09 13:54 編集

返信遅くなりました。 はい、自分が書いたコードの意味把握してます。詳しくはコメントアウトに記載してます。
Zuishin

2019/07/09 13:54

で、質問は何ですか?
Zuishin

2019/07/09 13:57

ちなみにコメントとコメントアウトは違います。言葉が通じないと話ができないので調べておいてください。
haruniku

2019/07/09 13:59

質問は翌日の取得をしたいです。あの後、色々調べて見たところ「setDate」と「getDate」を使えば取得できるのですが、試しても中々上手くできずに困ってます。
Zuishin

2019/07/09 13:59

取得したいのはわかりました。質問は何ですか? 何が聞きたいんですか?
haruniku

2019/07/09 14:01 編集

>>> ちなみにコメントとコメントアウトは違います。言葉が通じないと話ができないので調べておいてください。 あの、これって嫌味ですか?
Zuishin

2019/07/09 14:02

私は「~したい」を「~したいのでやり方を教えてください」という質問ととりました。 それに回答し、問題ないと認識しています。 ではなぜそれが解決していないのかわかりません。 ですから聞いています。 何を教えれば解決するんですか?
haruniku

2019/07/09 14:16 編集

>>>何を教えれば解決するんですか? 回答頂いたことは感謝してます。ただ、think49さんからご指定頂いてる通りに「自分の力で納得するコードを書きたい」です。なので、Zuishinさんから頂いたコードの処理内容を知りたいです。ただ、無理なら無理だとハッキリ仰って頂いて構いません。
Zuishin

2019/07/09 14:16

自分の力で納得するコードを書きたいなら、今あなたが質問に挙げているコードは全部捨ててください。 あれは単なるコピペです。 あなたが書いたものではありません。 その上で、なにを教えれば解決するのかを質問に明記してください。 私が書いたコードは何も難しいところがありませんし、アルゴリズムの解説もしました。 この処理内容を知りたいということなら、すでに十分な材料は出そろっています。 その上でわからないところがあるなら、わからないところを具体的に質問すればいいでしょう。
Zuishin

2019/07/09 14:20

padLeftWithZero は 0 埋めをする関数で、createDateList は指定された年月の日を列挙する関数です。 それを 2019 年 6 月と 2019 年 7 月を引数に二回呼び出し、結果を配列に入れています。 ただこれだけのことです。
m.ts10806

2019/07/10 00:03 編集

>今回のベンダーさん いつからteratailは質問サイトではなく開発受託サイトになったのでしょうか。 https://teratail.com/help/question-tips#questionTips1-1 「サポートセンターではなく」と明確に書いてありますが・・・。 規約違反ともとれるので通報しておきました。 ベンダーと呼んでいる割に金銭の授受は発生しているようではないので表現としても利用方法としても不適切です。あくまで「質問者」「回答者」以外の呼び方はないですし単なる1ユーザーですよ。 そういったスタンスを取りたいのでしたらメンター利用してください。QAサイトの回答者はあくまで回答者であってベンダーでもなんでもありません。
guest

回答2

0

検索の仕方が悪いんじゃないでしょうか。
私は配列の生成の仕方と日付の文字列化の方法、そしてゼロ埋めの方法を検索して次のコードを作りました。

JavaScript

1const padLeftWithZero = (src, number) => { 2 return ("0".repeat(number) + src).slice(-number); 3}; 4 5const createDateList = (year, month) => { 6 const end = new Date(year, month, 0).getDate(); 7 const m = padLeftWithZero(month, 2); 8 return [...Array(end).keys()].map(i => year + "/" + m + "/" + padLeftWithZero(i + 1, 2)); 9}; 10 11console.log([createDateList(2019, 6), createDateList(2019, 7)]);

投稿2019/07/07 08:31

編集2019/07/07 08:35
Zuishin

総合スコア28660

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

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

Zuishin

2019/07/07 08:32

書き忘れていましたが、月末日の求め方も検索しました。
haruniku

2019/07/07 08:41

回答ありがとうございます。 ご指摘頂いた通り検索の仕方が悪いのでもう少し探してみます!
Zuishin

2019/07/07 08:42

その前にこのコードが意図通りに動くかどうか確かめてください。 違うならどこが違うかを書かないと他の回答者が回答できません。
think49

2019/07/07 08:45

コードを回答して終わりならこの回答で良いのですが、前質問を読む限り、自分の力で納得するコードを書きたいようです。 なので、回答が難しい…。
Zuishin

2019/07/07 08:47

なるほど。なぜ質問したのかわかりませんね。
haruniku

2019/07/09 14:25 編集

回答ありがとうございました。
Zuishin

2019/07/09 14:26

あなたの姿勢はよくわかりました。それは私以外の回答者にも伝わったことでしょう。
guest

0

ベストアンサー

日付処理はカレンダーの作り方を探して理解するのが手早いと思います。

【JavaScript カレンダー 組み方 - Google 検索】
https://www.google.co.jp/search?safe=off&q=JavaScript+カレンダー+組み方

投稿2019/07/09 14:08

kei344

総合スコア69424

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

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

haruniku

2019/07/09 14:40

参考にさせて頂きます。回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問