javascript - 如何修复 "item[key].toLowerCase is not a function"

标签 javascript reactjs

我想在我的仪表板中添加一个搜索字段,我在这个 api 中获得了 api 数组,在数组中我有对象,所以我如何才能做到这一点,以 react 我应该在其上应用什么逻辑。

这是我应用的逻辑,但它返回错误

这是错误:

item[key].toLowerCase is not a function

这是我应用的逻辑:

handleChange = event => {
    const lowercasedFilter = this.state.SearchResult.toLowerCase();
    this.state.data.bank_accounts.filter(item => {
    return Object.keys(item).some(key =>
      item[key].toLowerCase().includes(lowercasedFilter)
    );
  });
    this.setState({ SearchResult: event.target.value });
  };

最佳答案

正如你展示的你的单品看起来像

{bank_accounts : [ { id: 1 , item_name: 'bankOne'} , {id: 2 , item_name:'bankTwo'} ] }

这里有两个键 iditem_name 所以 item[key] 对于 id 是数字,对于这会引发错误。首先检查 typeof 的值,然后使用 .toLowerCase

handleChange = event => {
    const lowercasedFilter = this.state.SearchResult.toLowerCase();
    this.state.data.bank_accounts.filter(item => {
    return Object.keys(item).some(key =>
      typeof item[key] === "string" && item[key].toLowerCase().includes(lowercasedFilter)
    );
  });
    this.setState({ SearchResult: event.target.value });
  };

注意:filter() 不会改变原始数组。您需要将结果存储在另一个变量中。喜欢

const result  = this.state.data.bank_accounts.filter(....)

关于javascript - 如何修复 "item[key].toLowerCase is not a function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55574602/

相关文章:

reactjs - 与 setInterval/clearInterval 一起使用时 useRef 的类型 [react-typescript]

javascript - Material ui 表行复选框不显示

javascript - 映射数组,重用子组件 Prop 不改变

javascript - typescript 中的对象解构

reactjs - 使用 Enzyme 进行测试时使用 React Hooks 访问功能组件的状态

javascript - 如何动态生成一个基本的kendoUI小部件?

javascript - 快速发送新的 HTML 页面,无需重定向

javascript - 使用 jquery 可排序和 css 变换/过渡

javascript - 更改 PHP 变量后 Highcharts 实时数据未更新

php - 使用 PHP 重命名 JavaScript 变量和函数