【发布时间】:2021-03-28 21:53:29
【问题描述】:
我有包含我希望过滤的数组的对象。我想根据类别和划分过滤一个类数组,然后用过滤后的数组返回新对象。
这是 JSON 的样子:
{ "monday": [
{ "id": 1, "time": "sometime", "class": "some class", "age": "12", "category": "jazz", "division": "junior" },
{ "id": 2, "time": "sometime", "class": "some class", "age": "12", "category": "tap", "division": "senior" },
{ "id": 3, "time": "sometime", "class": "some class", "age": "12", "category": "hip hop", "division": "teen" }
],
"tuesday": [
{ "id": 1, "time": "sometime", "class": "some class", "age": "12", "category": "jazz", "division": "teen" },
{ "id": 2, "time": "sometime", "class": "some class", "age": "12", "category": "tap", "division": "teen" },
{ "id": 3, "time": "sometime", "class": "some class", "age": "12", "category": "hip hop", "division": "teen" }
],
"wednesday": [
{ "id": 1, "time": "sometime", "class": "some class", "age": "12", "category": "tap", "division": "teen" },
{ "id": 2, "time": "sometime", "class": "some class", "age": "12", "category": "jazz", "division": "teen" },
{ "id": 3, "time": "sometime", "class": "some class", "age": "12", "category": "hip hop", "division": "teen" }
]
}
这是用于过滤和映射过滤数组的反应代码。
const [classes, setClasses] = useState(data);
const [category, setCategory] = useState(category);
const [division, setDivision] = useState(division);
useEffect(() => {
let filteredClasses = data;
if (category !== 'all') {
filteredClasses = filteredClasses.filter(
(classes) => classes.category === category
);
}
if (division !== 'all') {
filteredClasses = filteredClasses.filter(
(classes) => classes.division === division
);
}
setClasses(filteredClasses);
}, [category, division]);
<ul>
{classes.monday.map((item) => (
<li key={item.order}>
{item.time} <br />
{item.class} <br />
{item.age}
</li>
))}
</ul>
<ul>
{classes.tuesday.map((item) => (
<li key={item.order}>
{item.time} <br />
{item.class} <br />
{item.age}
</li>
))}
</ul>
对此的任何帮助将不胜感激。
【问题讨论】:
-
你没有返回 jsx 也没有返回 map 函数。你能试试吗??
-
对不起,我明白这有多令人困惑。我从代码示例中截取了返回部分。
标签: javascript arrays reactjs