[英]How to filter multiple objects in an array?
這是我的陣列
const [arr, setArr] = useState([
{ id: 1, name: 'John', age: 40},
{ id: 2, name: 'Jane', age: 50 },
]);
我用過filter
來搜索,
{arr.filter(product => product.name.includes(value)).map((row) => (
<TableRow>
<TableCell align="center">{row.id}</TableCell>
<TableCell align="center">{row.name}</TableCell>
<TableCell align="center">{row.age}</TableCell>
</TableRow>
))}
現在我只能按name
搜索,我想同時按name
或age
搜索。
您可以使用邏輯 OR 運算符來做到這一點,例如
let age = 40;
arr.filter(product => product.name.includes(value) || product.age == age)
const filteredArr = arr.filter(product => product.name.includes(value) || product.age === value);
{filteredArr.map((row) => (
<TableRow>
<TableCell align="center">{row.id}</TableCell>
<TableCell align="center">{row.name}</TableCell>
<TableCell align="center">{row.age}</TableCell>
</TableRow>
))}
希望對你有幫助
import React, { useState } from "react";
function Data() {
const [arr, setArr] = useState([
{ id: 1, name: "John", age: 40 },
{ id: 2, name: "Jane", age: 50 },
]);
const [userName, setName] = useState("");
const [age, setAge] = useState(0);
let filtered = arr.filter(
(name) => name.name === userName || name.age === Number(age)
);
return (
<div>
<input
placeholder="age"
onChange={(e) => {
setAge(e.target.value);
}}
value={age}
/>
<input
placeholder="name"
onChange={(e) => {
setName(e.target.value);
}}
value={userName}
/>
{filtered.map((row) => (
<>
<h1>{row.id}</h1>
<h1>{row.name}</h1>
<h1>{row.age}</h1>
</>
))}
</div>
);
}
export default Data;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.