javascript - 我对过滤器和地图功能感到困惑。我正在嵌套它们。请指出我正确的方向
问题描述
我在嵌套函数中尝试做的是,从书籍字典中选择一本书(新的反应,他们在 python 中调用这些字典),然后在图表数组中找到一个具有这本书 ID 的对象,然后我去窥视数组和显示那个人的名字。
我想要一个如下输出:
<div>
<h2>Jokes 101</h2>
<p>Liked By:</p>
<ul>
<li>Muneeb</li>
<li>Osama</li>
</ul>
</div>
import React, { Component } from 'react';
import './App.css';
import logo from './logo.svg';
const chart = [
{
id: 1,
peepsID: '1',
bookLikedID: '1',
},
{
id: 2,
peepsID: '2',
bookLikedID: '1',
},
{
id: 3,
peepsID: '4',
bookLikedID: '5',
},
{
id: 4,
peepsID: '5',
bookLikedID: '2',
},
{
id: 5,
peepsID: '3',
bookLikedID: '5',
},
{
id: 6,
peepsID: '6',
bookLikedID: '4',
},
];
const peeps = {
1: {
id: 1,
name: 'Fazal Deen',
readerCategory: 'champ',
},
2: {
id: 2,
name: 'Irfan',
readerCategory: 'rising-star',
},
3: {
id: 3,
name: 'Muneeb',
readerCategory: 'beginner',
},
4: {
id: 4,
name: 'Osama',
readerCategory: 'champ',
},
5: {
id: 5,
name: 'Najam',
readerCategory: 'champ',
},
6: {
id: 6,
name: 'Aamir',
readerCategory: 'beginner',
},
};
const books = {
1: {
id: 1,
name: 'Imran Series',
},
2: {
id: 2,
name: 'Harry Potter',
},
3: {
id: 3,
name: 'I Am Malala',
},
4: {
id: 4,
name: 'Bang-e-Dara by Allama Iqbal',
},
5: {
id: 5,
name: 'Jokes 101',
},
};
class App extends Component {
render() {
return (
<div>
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">React Bootcamp - Train the Trainer - Coding Practice</h1>
</header>
<h2>Book People liked</h2>
{ books.map(
value => <div><h2>{value.name}</h2> <p>Liked by:</p>
<ul>{chart.filter(
chartVal => value.id == chartVal.bookLikedID,
<li>{peeps.filter(
people => people.id == chartVal.peepsID)}
</li>
)}</ul>
</div>
)}
</div>
);
}
}
export default App;
我收到一个错误:“./src/App.js 第 116 行:'chartVal' 未定义 no-undef”
解决方案
您的问题并非特定于 React。它特定于 Javascript。
这是你想要的:
<ul>
{chart
.filter(chartVal => value.id == chartVal.bookLikedID)
.map(chartVal => (
<li>
{peeps.filter(people => people.id == chartVal.peepsID)}
</li>
))}
</ul>
这就是您将 afilter
和 a链接map
在一起的方式。
这是整个组件:
class App extends Component {
render() {
return (
<div>
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">
React Bootcamp - Train the Trainer - Coding Practice
</h1>
</header>
<h2>Book People liked</h2>
{Object.values(books).map(value => (
<div>
<h2>{value.name}</h2> <p>Liked by:</p>
<ul>
{chart
.filter(chartVal => value.id == chartVal.bookLikedID)
.map(chartVal => (
<li>
{peeps.filter(people => people.id == chartVal.peepsID)}
</li>
))}
</ul>
</div>
))}
</div>
)
}
}
推荐阅读
- asp.net-mvc - 使用 Service Worker - 在线时使用获取的数据的 MVC 视图
- php - 为什么在我的 html 文件中找不到 svg 代码行
- r - 为什么 R 找不到函数“getStates”
- matlab - 如何通过 fsolve 函数获得这些具有灵活参数的方程的根?
- java - 我可以强制在 Spring 中包含两个标题中的至少一个吗?
- couchbase - 如何在 Couchbase 中获取今天插入的文档?
- javascript - 展平数组的最有效方法
| T> 在 JavaScript 中 - python - 如何将字典列表更改为定义的数据框格式?
- alfresco - 如何使用 Java 从 ServiceTask 在 Alfresco 中创建新内容?
- java - 如何使用 DBUtil. 查找 SQL fetchlist 中的错误?