如何在React中过滤和排除1种项目类型?

时间:2018-12-11 01:44:41

标签: javascript reactjs react-native

我有一组带有类别的对象。除了可以手动定义的类别外,我还需要获取所有类别。我已经在自己的状态下设置了该类别。我希望排除notCat

所以要获得所有对象,我要这样做:

state = {
    collapse: false,
    active: false,
    category: 'General Questions',
    notCat: 'Deal FAQ',
};
const cats = [...new Set(Faqs.map(q => q.category))];
    const catsR = cats.map((name, i) => {
        return (
            <li
                key={i}
                onClick={() => this.faqNavigation(name)}
                className={
                    this.state.category === name ? 'active' : 'not-active'
                }
            >
                {name}
            </li>
        );
    });

然后我就是这样渲染它:

<ul className="toc">{catsR}</ul>

如何排除某个类别。在Category A渲染中说{catsR}

1 个答案:

答案 0 :(得分:3)

假设常见问题解答是一个数组,那么实际上不需要将其转换为集合,然后再转换为数组。 Array.map已经返回了一个新数组,因此您可以简单地执行以下操作:

const cats = Faqs.map(q => q.category);

作为对您的问题的回答,可以在映射之前使用Array.filter方法过滤掉某些类别:

const catsR = cats.filter(c => c !== 'notCat').map((name, i) => {
    return (
        <li
            key={i}
            onClick={() => this.faqNavigation(name)}
            className={
                this.state.category === name ? 'active' : 'not-active'
            }
        >
            {name}
        </li>
    );
});