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

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

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

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

解決済

React.jsにてfilterをつかい複数条件のフィルターをかけれるようにしたい

Tomato_leaf
Tomato_leaf

総合スコア113

React.js

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

1回答

0リアクション

0クリップ

208閲覧

投稿2022/08/07 11:39

前提

Reactでjsonデータを取得し、名前でユーザーを検索できるシステムを作っています。
firstNameもしくはlastNameで検索をかけれるようにしたいと
思いましたが実装中に以下のエラーメッセージが発生しました。

実現したいこと

  • jsonにあるユーザーのデータでfirstNameもしくはlastNameでユーザーを検索できるようにしたい

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

'lastName' is not defined no-undef

とでて、複数条件の検索ができないでいます。

該当のソースコード

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) => { setSearchKeyword(data.search) const result = allPosts.filter((output, index) => { console.log(output) return output.firstName||lastName.includes(data.search); }); console.log(result) 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ライブラリです。