javascript - 如果选择所有值,则显示列表中的所有结果

标签 javascript reactjs

我正在尝试创建列表过滤器。 我写的代码是这样的:

constructor(props) {
    super(props);
    this.state = {
        value: 'all',
        textfield: ''
    };
}

render() {
  let filteredPlatform = fullList.filter((el) => {
    return el.gameName.toLowerCase().indexOf(this.state.textfield) >= 0 && el.platform === this.state.value;
  });
  .....
  <Table data={filteredPlatform} />
}

平台值可以是allxboxps4等。 我想在开始时显示整个未过滤列表(按平台),因为选择了全部。 有什么提示吗?

最佳答案

我通常会将其分解为一个单独的函数,并使用 if 语句来处理“all”情况,但这是使用三元运算符的另一种方法:

const filteredPlatform = fullList.filter( el =>
               el.gameName.toLowerCase().indexOf(this.state.textfield) >= 0 &&
               (el.platform === this.state.value || "all" === this.state.value )
            );

因此,如果 this.state.value 是“all”,那么无论 el.platform 是什么,我们都会返回。否则我们返回过滤后的版本。

另一种更具表现力的方式是使用 2 个过滤器:

const filteredPlatform = fullList
     .filter( el => el.gameName.toLowerCase().indexOf(this.state.textfield) >= 0 )
     .filter( el => el.platform === this.state.value || "all" === this.state.value );

关于javascript - 如果选择所有值,则显示列表中的所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46758788/

相关文章:

javascript - Firebase:在测试期间我得到 "undefined is not a function"

javascript - axios 多次请求返回不同的对象值

reactjs - React 自动渲染 Math Latex

javascript - 如何从 React/Redux 中的对象生成和呈现无序列表?

javascript - React Native 中 ReactDOM 和 document.body 的等效变量是什么? (世博会)

javascript - Angular ng-repeat 过滤器传递了错误的索引

javascript - Ionic 3 Keyboard covers(overlays) 聚焦 ionic 输入元件

javascript - 如何从浏览器控制台重新加载修改后的 .js 文件?

javascript - React 进度元素在 IE10 上有一个错误

javascript - 在 react 中导出高阶组件