🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

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

Q&A

解決済

2回答

668閲覧

文字列を検索したいです

inukujira

総合スコア130

JavaScript

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

0グッド

0クリップ

投稿2021/02/19 15:27

すみません、教えてください。
以下の配列があります。

Javascript

1 // 検索させたいキーワード 2 const keyNameList = ["aaa", "bbb"]; 3 4 // 検索したいリスト 5 const highlightListForm = { 6 value: { 7 aaa0: "", 8 aaa1: "", 9 aaa11: "", 10 aaaaa: "", 11 bbb0: "", 12 bbbbb: "" 13 } 14 };

「検索したいリスト」から以下の値を取得したいです。
前提条件:「検索させたいキーワード」の後ろは必ず半角数字のみとなっています。

["aaa0", "aaa1", "aaa11", "bbb0"]

自分でやった事は以下の処理を書いたのですがうまく正規表現を扱えず余計なKey名まで取得されてしまいます。

Javascript

1 let keys = []; 2 for (let val of keyNameList) { 3 Object.keys(highlightListForm.value).filter(item => { 4 if (item.match(val)) { 5 keys.push(item); 6 } 7 }); 8 } 9 console.log(keys); 10 // ["aaa0", "aaa1", "aaa11", "aaaaa", "bbb0", "bbbbb"]

大変申し訳ございませんが、どのように取得すればよいのか良い方法あれば教えてください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

JavaScript

1 if (item.match(`^${val}\d*$`)) {

でしょうか。

投稿2021/02/19 16:24

otn

総合スコア85882

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

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

eneko0513

2021/02/19 16:29

こちらのほうが正ですね。 自分のやつの場合はaaaaaa11とかも拾っちゃいますね。。
inukujira

2021/02/20 10:53

ありがとうございます!無事に解決しました!
guest

0

いい方法か微妙ですがヒントになれば..。

javascript

1 // 検索させたいキーワード 2 const keyNameList = ["aaa", "bbb"]; 3 4 // 検索したいリスト 5 const highlightListForm = { 6 value: { 7 aaa0: "", 8 aaa1: "", 9 aaa11: "", 10 aaaaa: "", 11 bbb0: "", 12 bbbbb: "" 13 } 14 }; 15 16 17 let keys = []; 18 for (let val of keyNameList) { 19 Object.keys(highlightListForm.value).filter(item => { 20 // itemをvalでsplitして配列にする 21 let tempSplit = item.split(val); 22 // valでsplitしていると要素番号0は空になるので空であることと 23 // 区切った要素番号1番が数字である(isNaNは数字じゃない場合はfalseになる)ことを利用して判定 24 if ((tempSplit[0] == "") && !isNaN(tempSplit[1])) { 25 keys.push(item); 26 } 27 }); 28 } 29 console.log(keys); 30 // ["aaa0", "aaa1", "aaa11", "bbb0"]

// 追記
自分の処理の場合 aaaaaa11 も拾ってしまうのでotnさんの方を参考にしてください。

投稿2021/02/19 16:16

編集2021/02/19 16:30
eneko0513

総合スコア349

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問