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

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

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

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

Q&A

解決済

2回答

2922閲覧

配列からテーブルを作成したい

teddy1121

総合スコア44

JavaScript

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

0グッド

0クリップ

投稿2022/02/19 03:32

前提・実現したいこと

Javascriptでカンマで区切られた配列からテーブルを作成したいと思っています。
配列には「ID、名称、~、製品番号、ID、名称、~、製品番号」というようにいくつかのまとまりが繰り返されています。
そこで、それぞれのまとまりごとにテーブルに表したいのですがうまくいきません。
配列通りそのまま横につながった状態や、かたまりごとに改行されるような形はできたのですが、理想のようになりません。
理想↓
ヘッダ ID 名称  ~ 製品番号
1 製品A ~ 001
2 製品B ~ 002
このような形のテーブルにはできないでしょうか?
有識者のみなさんのアドバイスをいただけたら幸いです。

該当のソースコード

javascript

1for (var i = 0; i < parts.length; i++) { 2 table += "<tr>" 3 for (var p = 0; p < 8; p++) { //8は表示したいまとまりの項目数です 4 let partsLst = (String(parts)).split(/[,]/g); 5 table += "<td>" + carPartsLst[p] + "</td>"; 6 } 7} 8 table += "</tr>" 9

試したこと

上記の状態だと製品Aが下にずっと続きます。
右に製品B、C・・・とつながっています。(p<8で切っているので実際は製品Aの情報のみ表示される)

table += "<tr>" + "<td>" + carPartsSP[p] + "</td>" + "</tr>"
こうすると、各レコード(ID・名称、、、)がそれぞれ改行されてしまいます。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2022/02/19 04:32

> 「ID、名称、~、製品番号、ID、名称、~、製品番号」 "~"の部分は個数は固定でしょうか。それとも各IDごとにかわるのでしょうか
teddy1121

2022/02/19 05:13

yonakororinさん、ありがとうございます。 ~の項目数は固定です。 よろしくお願いします。
guest

回答2

0

各かたまりの中の要素数をNとすると、i をNで割った余りで何番目の列の要素か、ということがわかります。
余り0が先頭、余りN-1が末尾なので、そのタイミングで適切にtrで区切ればうまくいきそうです。

javascript

1for (var i = 0; i < parts.length; i++) { 2 if( i%N == 0) { 3 // 行の先頭 4 } 5 if( i%N == N-1 ) { 6 // 行の末尾 7 } 8}

投稿2022/02/19 05:36

編集2022/02/19 05:37
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2022/02/19 05:39

あれ?partsという配列って 「ID、名称、~、製品番号、ID、名称、~、製品番号」 という形で1次元に全データが並んでいるのかと思ったのでしたが、誤解でしたでしょうか
teddy1121

2022/02/19 05:51

はい、こんな感じで並んでいます。 1,モーター,~,001,2,エンジン,~,002。。。 accessからsqlでテーブルを読みだしているのですが、csvと違って改行が入らないのでひたすら連続したデータになってしまっていますT_T
teddy1121

2022/02/19 05:52

ku__ra__geさんに教えていただいた方法で表現することができましたが後学のために引き続き教えていただけたら幸いです。
退会済みユーザー

退会済みユーザー

2022/02/19 05:57

自分の回答だと各固まりに分けるところまでで止まってました。 改行まではできていたとなると、そこから先が必要でしたね… すみません。
teddy1121

2022/02/19 06:09

とんでもないです! 先頭と末尾を割り出す方法を教えていただけただけで感謝です! 任意の場所で区切る方法も探ったのですがなかなかうまくいかなかったので教えて頂いたものを自分なりに理解して今後に活かしていきます!
guest

0

ベストアンサー

こうすれば望む動作になると思います。

javascript

1var parts = [ 2 "a1,b1,c1", 3 "a2,b2,c2", 4 "a3,b3,c3", 5]; 6var table = ""; 7 for (var i = 0; i < parts.length; i++) { 8 table += "<tr>" 9 var partsLst = (String(parts[i])).split(/[,]/g); 10 for (var p = 0; p<partsLst.length; p++) { 11 table += "<td>" + partsLst[p] + "</td>"; 12 } 13 table += "</tr>" 14}

投稿2022/02/19 05:33

ku__ra__ge

総合スコア4524

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

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

teddy1121

2022/02/19 05:44

ku__ra__geさん! 感動です! 求めていた通りのテーブルができました!やっぱり詳しい方に聞くのが一番ですね。 1日悩んでいたのがあっという間に解決されました^^ ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問