Javascript 在React中过滤并映射到同一数组
我有以下组成部分:Javascript 在React中过滤并映射到同一数组,javascript,node.js,reactjs,Javascript,Node.js,Reactjs,我有以下组成部分: function Params(props) { const { Parameters } = useFetchParams(); return ( <div className='Params'> { Parameters && Parameters.map(parameter => { const { Nam
function Params(props) {
const { Parameters } = useFetchParams();
return (
<div className='Params'>
{
Parameters && Parameters.map(parameter => {
const { Name, Value } = parameter;
if (Name.includes(props.filter)) {
return (
<div className='Param' key={Name}>
<p>{Name}</p>
<p>{Value}</p>
</div>
)
}
})
}
</div>
)
}
我只想显示包含我从道具传入的文本的参数。您可以看到,我目前正在为此使用if语句,它看起来很笨拙。我想知道是否有可能同时映射和过滤这个数组
我尝试在地图的末尾粘贴过滤器,但它返回一个错误
感谢您像@Yevgen Gorbunkov建议的那样进行查看,您所做的很好,映射前过滤实际上并没有更快,尽管它可能更具可读性。 但是是的,这是可能的。像这样: 函数参数{ const{Parameters}=useFetchParams; 回来 { Parameters&&Parameters.filterparameter=>parameter.Name.IncludeProps.filter .mapparameter=>{ 常量{Name,Value}=参数; 回来 {Name} {Value} } } }
正如@Yevgen Gorbunkov所建议的,您所做的很好,映射之前的过滤实际上并没有更快,尽管它可能更具可读性。 但是是的,这是可能的。像这样: 函数参数{ const{Parameters}=useFetchParams; 回来 { Parameters&&Parameters.filterparameter=>parameter.Name.IncludeProps.filter .mapparameter=>{ 常量{Name,Value}=参数; 回来 {Name} {Value} } } }
对于.filter,您实际上不需要额外的循环。您仍然可以使用一个.map,它有条件地返回JSX或null/false/undefined,这将在渲染时被忽略。您得到了什么错误?你也试过用控制台记录props.filter?@DonJuanEco的值,如果你发现你正在过滤和映射一个数组,那么你可能想使用.reduce。它可以同时执行这两个操作。您实际上不需要为.filter添加额外的循环。您仍然可以使用一个.map,有条件地返回JSX或null/false/undefined,它们将在渲染时被忽略。您得到了什么错误?你也试过用控制台记录props.filter?@DonJuanEco的值,如果你发现你正在过滤和映射一个数组,那么你可能想使用.reduce。它可以同时做这两件事。