首页 > 解决方案 > 如何在过滤器方法中定义两种运行代码的方式

问题描述

我在获取 API 的反应中部署了过滤器搜索,指示在搜索输入中输入的名称,但我想以两种方式之一进行过滤。

  1. 1 表示名称的方式,
  2. 2way 通过输入的符号表示

我不知道如何在 filter 方法中定义coin.symbol

const filterCoins = currentCoins.filter(coin =>
  coin.name.toLowerCase().includes(search.toLowerCase())
);

一般来说,我想在coin.name旁边的 filter 方法中定义下面的行代码,当用户搜索符号或名称时显示结果。

coin.symbol.toLowerCase().includes(search.toLowerCase())

标签: node.jsarraysreactjs

解决方案


返回两个条件的结果。

const filterCoins = currentCoins.filter(({ name, symbol }) =>
  name.toLowerCase().includes(search.toLowerCase()) ||
  symbol.toLowerCase().includes(search.toLowerCase())
);

或者更简洁和DRY,将两个值放入一个数组中,以检查其中至少一个满足条件测试。

const filterCoins = currentCoins.filter(({ name, symbol }) => 
  [name, symbol].some(el => el.toLowerCase().includes(search.toLowerCase()))
);

推荐阅读