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)にだけ#を付けて出力をしたいのですが、配列の加工の仕方を完全に理解していないので、そのやり方がわかりません。
ここからどうすればよいかわからなくない、手が完全に止まってしまいました。
お力添えをしていただいてもよろしいでしょうか。よろしくお願いします。
ここまで自分でできたなら、データの加工法が知りたいわけじゃないですよね?
Slack に投稿する方法がわからないのならそう書かないと通じませんよ。
そこの記述はデータを入れ替えているだけです。
members[i] にあったものを members[j] に入れ、逆に members[j] にあったものを members[i] に入れています。
回答ありがとうございます。
雑な書き方をしてしまい、すみませんでした。
改めて、知りたい意図と内容を修正して再度質問させていただきます。
コメントアウトの回答もしていただいてありがとうございます。
なるほど、それでランダムに文字列が入れ替わるようになっているという認識であっていますでしょうか。
難しく考えなくても、最初に # を改行無しで出力し、そこから続けて各配列要素を改行区切りで出力すればいいと思います。
ありがとうございます。
Chromeでは期待したような出力をすることができました。
GAS の Logger はログをとるためのものです。メールを送るには MailApp を使ってください。
回答1件
あなたの回答
tips
プレビュー