我正在尝试创建列表过滤器。 我写的代码是这样的:
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} />
}
平台值可以是all、xbox、ps4等。 我想在开始时显示整个未过滤列表(按平台),因为选择了全部。 有什么提示吗?
最佳答案
我通常会将其分解为一个单独的函数,并使用 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/