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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

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

Q&A

解決済

1回答

2714閲覧

JavaScriptで班分けプログラムを組む

hosodaaaaa

総合スコア47

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

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

0グッド

1クリップ

投稿2020/04/25 13:01

編集2020/04/26 09:43

Vol.1

// src ---------------------------------------------------------------------------------------- const members = ['吉田','友近','井上','石田','手塚','大宮','宇都宮','佐藤','長根','近藤','山本']; const total = 3; const numberPerTeam = Math.floor(members.length / total); const moduloMembers = members.length % total; const s = members => { for (let i = members.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [members[i], members[j]] = [members[j], members[i]]; //ここの記述のがイマイチ理解できていないのでわかる方教えて下さい。。 } return members; } for (let i = 0; i < total; i++) { const grouping = s(members).splice( 0, numberPerTeam + ( i < moduloMembers )); console.log(grouping); } // output ---------------------------------------------------------------------------------------- ["近藤", "山本", "宇都宮", "吉田"] ["大宮", "手塚", "友近", "佐藤"] ["井上", "長根", "石田"]

上記のように、ランダムで班を作成することができました。

# 近藤 //リーダー 山本 //メンバー1 宇都宮 //メンバー2 吉田 //メンバー3 # 大宮 手塚 友近 佐藤 # 井上 長根 石田

次に、上記のように配列の一番最初(index0)にだけ#を付けて出力をしたいのですが、配列の加工の仕方を完全に理解していないので、そのやり方がわかりません。

ここからどうすればよいかわからなくない、手が完全に止まってしまいました。
お力添えをしていただいてもよろしいでしょうか。よろしくお願いします。


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

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

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

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

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

Zuishin

2020/04/25 13:05

ここまで自分でできたなら、データの加工法が知りたいわけじゃないですよね? Slack に投稿する方法がわからないのならそう書かないと通じませんよ。
Zuishin

2020/04/25 13:09

そこの記述はデータを入れ替えているだけです。 members[i] にあったものを members[j] に入れ、逆に members[j] にあったものを members[i] に入れています。
hosodaaaaa

2020/04/25 13:19

回答ありがとうございます。 雑な書き方をしてしまい、すみませんでした。 改めて、知りたい意図と内容を修正して再度質問させていただきます。 コメントアウトの回答もしていただいてありがとうございます。 なるほど、それでランダムに文字列が入れ替わるようになっているという認識であっていますでしょうか。
Zuishin

2020/04/25 13:42 編集

難しく考えなくても、最初に # を改行無しで出力し、そこから続けて各配列要素を改行区切りで出力すればいいと思います。
hosodaaaaa

2020/04/26 07:36

ありがとうございます。 Chromeでは期待したような出力をすることができました。
Zuishin

2020/04/26 10:49

GAS の Logger はログをとるためのものです。メールを送るには MailApp を使ってください。
guest

回答1

0

ベストアンサー

//ここの記述のがイマイチ理解できていないのでわかる方教えて下さい。。

MDN 分割代入 の 「変数の入れ替え」セクションで説明される内容に相当します。

配列要素を指定して(配列添字を含めて)入れ替えた結果、
splice() メソッドを駆使するよりも簡単に入れ替えることができます。

javascript

1var ary = [0,1,2,3,4,5,6,7,8,9]; 2[ary[2], ary[3]] = [ary[3], ary[2]]; 3console.log( ary ); //  [0, 1, 3, 2, 4, 5, 6, 7, 8, 9]

投稿2020/04/25 20:03

AkitoshiManabe

総合スコア5434

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

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

hosodaaaaa

2020/04/26 06:56

わかりやすい回答をしていただいてありがとうございます。 どう調べてよいかわからなかったので、改めて検索をかけて深ぼってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問