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

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

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

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

Q&A

解決済

3回答

855閲覧

配列にある文字列をカウントしてその数字を新たな配列に格納したい

kakeru99

総合スコア17

JavaScript

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

0グッド

0クリップ

投稿2019/02/20 07:29

javascript

1var array = [<th>aa</th><th>bb</th><th>cc</th>,<th>aa</th><th>bb</th>,<th>aa</th><th>bb</th><th>cc</th><th>dd</th>];

上記の配列の各要素に文字列<th>がいくつあるのかをカウントしてそのカウントした数字を新たな配列として作りたいと思っています。

実現したい配列は

javascript

1var array = [3,2,4]

です。

調べて配列にはindexOfを使うというところまではわかったのですが・・・。
初心者なものでこれでいいのかわかりません。

もしわかる方がいれば教えて頂けると恐縮です。
宜しくお願い致します。

javascript

1var num = 0; 2for (i = 0; i < num; i++) { 3 if (array[i].indexOf('<th>') !== -1) { 4 // let num_box = ':nth-of-type(' + k + ')'; 5 } 6}

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

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

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

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

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

guest

回答3

0

javascript

1const array = ["<th>aa</th><th>bb</th><th>cc</th>","<th>aa</th><th>bb</th>","<th>aa</th><th>bb</th><th>cc</th><th>dd</th>"]; 2const counts = array.map(e => e.split("<th>").length -1); 3console.log(counts);

投稿2019/02/20 07:38

papinianus

総合スコア12705

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

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

kakeru99

2019/02/20 08:25

splitをいうのがある事自体知らなかったです。 勉強になりました!
guest

0

js

1var textArray = ["<th>aa</th><th>bb</th><th>cc</th>","<th>aa</th><th>bb</th>","<th>aa</th><th>bb</th><th>cc</th><th>dd</th>"]; 2 3var countArr = []; 4 5for (i = 0; i < textArray.length; i++) { 6 countArr.push(textArray[i].split('<th>').length - 1); 7} 8 9console.log(countArr)

初学者の方と存じますので、解説もつけておきますね。

まず、indexOfは文字列を検索して、該当する一番最初の要素の場所を返す関数ですので、今回のように個数を全て数えるためには不適切です。

本コードでは配列の個数分for分を回し、その中で、文字列<th>の個数を求める式(ほぼ公式化されています)を回しています。
(実際にはsplitで<th>の位置で文字列を区切り、その数から1を引いています)

そして、求めた個数をcountArrに格納(pushメソッド)しています。

投稿2019/02/20 08:05

yu-smc

総合スコア610

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

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

kakeru99

2019/02/20 08:23

indexOfは不適切とのこと、頭に入れておきます! 丁寧な回答有り難うございます。
guest

0

ベストアンサー

DOM処理ではなく文字列として処理していいならこう

javascript

1var a = [ 2 "<th>aa</th><th>bb</th><th>cc</th>", 3 "<th>aa</th><th>bb</th>", 4 "<th>aa</th><th>bb</th><th>cc</th><th>dd</th>", 5 "<td>aa</td>", 6 ]; 7var b=a.map(function(x){ 8 return (x.match(/<th>/g)||[]).length; 9}); 10console.log(b); 11

※1つもヒットしない場合が抜けていたので修正しました

投稿2019/02/20 07:38

編集2019/02/20 08:07
yambejp

総合スコア114757

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

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

kakeru99

2019/02/20 08:25

ありがとうございます!勉強になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問