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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

3回答

847閲覧

【JS,jQuery】配列の形式を変更したいのです。

tanakamaro

総合スコア13

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2021/06/15 07:10

前提・実現したいこと

GoogleChartで使用しているデータとして※1の配列を使用しているのですが
想像していたヒストグラムは表示されずどうやら※2の形式にしないと意図したグラフにならないようです。
そこで質問なのですが、※2のような配列を作成するにはどのような方法がありますでしょうか?
人数と点数はMySQLのデータベースで保持しているためHTMLを直接いじるわけにもいかないです。
JSもしくはjQueryを使用して実現したいです。
人数と点数のデータ数は必ず同じ数が保存されています。

※1

['人数', '点数'], ['2', 12.1], ['3', 9.1], ['3', 12.2]

※2

['点数'], [12.1], [12.1], [9.1], [9.1], [9.1], [12.2], [12.2], [12.2]

試したこと

人数のデータと点数のデータをかければいいのかなと思ったのですが、全然自分自身ではわからなかったので質問させて頂きました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2021/06/15 22:43

既に出ている回答が何もヒントにならないなら単なる丸投げ作業依頼と認識します。
guest

回答3

0

javascript

1var a=[ 2 ['人数', '点数'], 3 ['2', 12.1], 4 ['3', 9.1], 5 ['3', 12.2], 6 ]; 7// var b=a.map((x,y)=>y==0?[x]:Array(Number(x[0])).fill(x)).flat(); 8var b=a.map((x,y)=>y==0?[x]:Array(Number(x[0])).fill(null).map(_=>x)).flat(); 9console.log(b);

※一部修正

投稿2021/06/16 00:57

編集2021/06/16 01:22
yambejp

総合スコア114987

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

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

root_jp

2021/06/16 11:52

横からすみません。いつも勉強させてもらっています。 これ、なぜ修正したのか参考までに教えていただけませんか? 修正前のものでも問題なさそうな気がして、ものすごく気になっています。 fillに配列を渡すと具合悪くなる時がある感じですか?
root_jp

2021/06/16 12:35 編集

fillに配列やオブジェクトを渡すと、全ての位置に同じインスタンスが設定されるんですね。 調べてると、多分これを考慮されたのかと推測しました。 確かにレコード数分インスタンスはあるべきだと思いますので。
yambejp

2021/06/17 00:08

fillで非リテラルなオブジェクトを指定すると独立したデータでなくなるんですよね 古い方のソースで a[1][0]="hoge"; console.log(b); とするとaへの修正がbに影響するのがわかります
root_jp

2021/06/17 00:49

全部、書き換わっちゃいますね。 今回も勉強になりました。ありがとうございます。
hiro_app

2021/06/17 03:33

いつもお世話になっております。 今回も勉強になりました!
guest

0

新しい配列に生成し直すのが単純で解りやすいかと思います。

どこでそういう動きをしているかは、各行にconsole.logを追加してご確認ください。

JQuery

1before = [ 2 ['人数', '点数'], 3 ['2', 12.1], 4 ['3', 9.1], 5 ['3', 12.2] 6]; 7after = []; 8console.log(before); 9after.push(before.shift()[1]); // 先頭はカラム名なので削除&afterへ「点数」のみ移動 10$.each(before, function (index, value) { 11 for (cnt = 0; cnt < value[0]; cnt++) { 12 after.push(value[1]); 13 } 14}); 15console.log(after);

投稿2021/06/15 09:18

hiro_app

総合スコア123

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

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

tanakamaro

2021/06/15 22:40

ありがとうございます! 少し勘違いしていまして、以下の形式にしたい場合はどのようなソースで実現することが出来ますでしょうか? ['人数', '点数'], ['2', 12.1], ['2', 12.1], ['3', 9.1], ['3', 9.1], ['3', 9.1], ['3', 12.2], ['3', 12.2], ['3', 12.2]
hiro_app

2021/06/16 00:40

配列が理解できていないということでしょうか? 提示したコードのどこがわかりませんか? 命令について1つ1つ調べて、各行が何を実行しているか理解すれば、すでに今回提示したコードが新しく希望したものとほぼほぼ同じであることが解るかと思います。 キーボードを数回押すだけで修正できますよ? すでに指摘されているようですが、作業の丸投げをされていると、私も判断することになるかもしれません。
guest

0

※1から※2に変換したいってことですか?
あまりスマートなやり方が思いつきませんでしたが、参考になれば。

JavaScript

1const src = [ 2 ['人数', '点数'], 3 ['2', 12.1], 4 ['3', 9.1], 5 ['3', 12.2] 6]; 7 8const score = [src[0][1]]; 9src.forEach(record => { 10 for (let i = 0; i < record[0]; i++) { 11 score.push(record[1]); 12 } 13}); 14 15console.log(score); // ["点数", 12.1, 12.1, 9.1, 9.1, 9.1, 12.2, 12.2, 12.2]

投稿2021/06/15 09:15

root_jp

総合スコア4666

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

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

tanakamaro

2021/06/15 22:40

ありがとうございます! 少し勘違いしていまして、以下の形式にしたい場合はどのようなソースで実現することが出来ますでしょうか? ['人数', '点数'], ['2', 12.1], ['2', 12.1], ['3', 9.1], ['3', 9.1], ['3', 9.1], ['3', 12.2], ['3', 12.2], ['3', 12.2]
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問