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

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

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

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

Q&A

解決済

2回答

4360閲覧

javascript:filter関数で部分一致を取得する方法

Jorrvaskr_prg

総合スコア6

JavaScript

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

0グッド

0クリップ

投稿2021/12/13 12:09

前提・実現したいこと

javascriptのネット演習問題を解いています。

発生している問題・エラーメッセージ

数値のみの配列の中から、特定の数値を含む要素をカウントしたいが、解決方法がわからない。

特定の数値=xとする。
var number = [...Array(100)].map((_,i) => i);
var checkNumber = new RegExp("." + x, "g");
var checker = String(number).match(checkNumber);
console.log(checker.length);

matchが文字列のみを対象と知ったので文字列化することで一応の解決を見ましたが(それでも誤答扱いでした)、

知りたいこと

filterなどで数値として処理するにはどのようなfilter関数があるのでしょうか。
filter関数で●●以上など簡単な演算子は使えますが、部分一致検索がどうしても調べきれませんでした。
0~100の中で5を含む数値(5も65も53も含む)を探す、という演算式を教えて下さい。

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

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

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

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

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

guest

回答2

0

特定の数値を含むという部分一致検索する以上、一旦文字列にするしかないのかなと思います。

js

1 2var x = 5; 3var number = [...Array(100)].map((_,i) => i); 4var checker = number.filter((i)=> String(i).indexOf(x) >= 0); 5console.log(checker.length); 6

投稿2021/12/13 12:55

cobm

総合スコア239

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

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

0

ベストアンサー

たとえば、こんなので。

javascript

1var numbers = [...Array(100)].map((_ ,i) => i); 2 3var x = 5; 4var numbersHavingX = numbers.filter(n => `${n}`.includes(`${x}`)); 5 6console.log(numbersHavingX); // => [5,15,25,35,45,50,51,52,53,54,55,56,57,58,59,65,75,85,95] 7console.log(numbersHavingX.length); // => 19 8

???? サンプル

正規表現を使うのであれば

javascript

1var x = 5; 2var pattern = RegExp(`${x}`); 3var numbersHavingX = numbers.filter(n => pattern.test(`${n}`));

???? サンプル

投稿2021/12/13 12:55

編集2021/12/13 13:14
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Jorrvaskr_prg

2021/12/13 15:57

$で文字列化は盲点でした。 includesも真偽を返すだけだと思っていたのですが、filterをかませるとこのような動作を行えるのですね。 細かいところを少しずつ分解して理解してみます。 ありがとうございました。
退会済みユーザー

退会済みユーザー

2021/12/13 16:24

コメントありがとうございます。そうですね。分解して部品ごとに理解するのは自分のものにするのに 良い方法と思います。さらにはじめに与えられる数列を 0 以上 999 以下にして x を二桁の数にしてみる、 あるいは 0 以上 9999 以下にして x を二桁や三桁にする・・・ などをやってみるのも面白いかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問