如何修复“item[key].toLowerCase 不是函数”

Sye*_*zvi 5 javascript reactjs

我想在我的仪表板中添加一个搜索字段,并且我在这个 api 中获得了 api 有数组,并且在数组中我有对象,所以我如何做它来反应我应该应用什么逻辑。

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

这是错误:

item[key].toLowerCase is not a function
Run Code Online (Sandbox Code Playgroud)

这是我应用的逻辑:

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 });
  };
Run Code Online (Sandbox Code Playgroud)

Mah*_*Ali 7

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

{bank_accounts : [ { id: 1 , item_name: 'bankOne'} , {id: 2 , item_name:'bankTwo'} ] }
Run Code Online (Sandbox Code Playgroud)

这里有两个键iditem_name所以item[key]forid是 number ,为此它会抛出错误。首先检查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 });
  };
Run Code Online (Sandbox Code Playgroud)

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

const result  = this.state.data.bank_accounts.filter(....)
Run Code Online (Sandbox Code Playgroud)