首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果状态是某种东西,则执行.filter & .map,否则仅执行.map

如果状态是某种东西,则执行.filter & .map,否则仅执行.map
EN

Stack Overflow用户
提问于 2018-10-12 03:31:17
回答 3查看 35关注 0票数 0

我甚至不确定是否可以这样做,但我会试着解释我想要实现的目标。

我正在尝试筛选和映射一个数组,其中labels.attributes.label === this.state.currentLabel

我正在让它工作。但如果是this.state.currentLabel === 'All',我只想做.map,而不是.filter

有没有我可以实现的条件逻辑来让它工作?

这里是代码现在的样子:

代码语言:javascript
复制
{podcasts.filter((labels) => labels.attributes.label === this.state.currentLabel)
  .map((pod) => {
    const podId = pod.id.attributes['im:id']
    const podName = pod['im:name'].label

    return <PodcastItem key={podId} id={podId} name={podName} />
})}

如果我解释得不好,很抱歉..我对编码是相当陌生的。所以,如果我能更好地描述它,请发表评论。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-12 03:37:24

只需将另一个条件添加到您的过滤器函数(使用||),您就完成了:

代码语言:javascript
复制
{podcasts.filter((labels) => this.state.currentLabel ===labels.attributes.label || this.state.currentLabel==='All')
  .map((pod) => {
    const podId = pod.id.attributes['im:id']
    const podName = pod['im:name'].label

    return <PodcastItem key={podId} id={podId} name={podName} />
})}
票数 1
EN

Stack Overflow用户

发布于 2018-10-12 03:35:07

而不是像这样链接

代码语言:javascript
复制
let ans = data.filter(..)
           .map(..)

你可以做到

代码语言:javascript
复制
let filtered = data; 

if( /* your state condition */) {
  filtered = data.filter(...)
}

let ans = filtered.map(...)
票数 2
EN

Stack Overflow用户

发布于 2018-10-12 03:35:46

你可以像这样内联它:

代码语言:javascript
复制
 {podcasts
    .filter(
      labels =>
        this.state.currentLabel === 'All'
          ? labels
          : labels.attributes.label === this.state.currentLabel,
    )
    .map(pod => {
      const podId = pod.id.attributes['im:id'];
      const podName = pod['im:name'].label;

      return <PodcastItem key={podId} id={podId} name={podName} />;
    });
 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52767607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档