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

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

新規登録して質問してみよう
ただいま回答率
87.20%
React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

解決済

React.jsにて検索機能を実装する際、大文字小文字を区別しないで検索できるようにしたい

Tomato_leaf
Tomato_leaf

総合スコア113

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

2回答

0リアクション

0クリップ

218閲覧

投稿2022/08/08 04:22

前提

Reactでjsonデータを取得し、名前でユーザーを検索できるシステムを作っています。
firstNameもしくはlastNameで検索をかけれるようにしたいと
思いましたが、現状のコードですと
大文字と小文字、そして文字列、全てが一致しないと検索できない状態なので
大文字小文字関係なく文字列が合っていれば
検索が働くようにしたいと思っています。

実現したいこと

検索窓にて大文字小文字関係なく文字列が合っていれば
検索機能が働くようにしたい

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

大文字と小文字、そして文字列、全てが一致しないと検索できない
(例えばIngabergで検索すると検索結果が表示されるがingabergだと表示されない)

該当のソースコード

React.js

import React, {useState, useEffect} from 'react'; import axios from 'axios'; import { useForm } from "react-hook-form"; const Top = () => { const [ posts, setPosts] = useState([]); const [ allPosts, setAllPosts] = useState([]); const { register, handleSubmit } = useForm(); // Gradeの平均スコアを出す関数 const gradesAverage = (grades) => { let sum = 0; grades.forEach(function(score) { sum += Number(score); }); let ave = sum / grades.length return ave; }; // ユーザーの入力キーワードをState化する const [searchKeyword, setSearchKeyword] = React.useState(""); useEffect(() => { axios.get('https://api.hatchways.io/assessment/students') .then(result => { setPosts(result.data.students); setAllPosts(result.data.students); }) }, []); const getSearchResult = (data) => { // console.log(data.search) setSearchKeyword(data.search) const result = allPosts.filter((output, index) => { return output.firstName.includes(data.search)||output.lastName.includes(data.search); }); setPosts(result); } return ( <div> <div> <form onSubmit={handleSubmit(getSearchResult)}> <input placeholder="" className='' {...register('search', { required: true })} /> <input className='btn btn-secondary' type="submit" value="Search" /> </form> </div> <div> {searchKeyword && <p>{searchKeyword}で検索</p> } {posts ? <> {posts.map((data, i) => <div key={i}> <div className="flex"> <div className="image"> <img src={data.pic} className="profile" /> </div> <div> <p className="name">{data.firstName} {data.lastName}</p> <div className="info"> <p>Email: {data.email}</p> <p>Company: {data.company}</p> <p>Skill: {data.skill}</p> <p>Average Grade: {gradesAverage(data.grades)}%</p> </div> </div> </div> </div> )} </> : <div> <p>Not Found!</p> </div> } </div> </div> ); } export default Top;

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。