簡體   English   中英

使用 indexOf 搜索 JSON object 返回 undefined

[英]searching JSON object with indexOf returns undefined

我在messages.json中有聊天消息的JSON對象,如下所示:

[
  {
   "sender": "Bob",
   "text": "Hi, how are you?"
  },
  {
   "sender": "James",
   "text": "Good, you?"
  }
]

我想在消息中搜索從文本輸入中接收到的術語的索引。 但是,當我運行以下代碼時,我在控制台中收到“未定義”。

const handleChange = (event) => {
  const result = messages.filter((message) => {
    return message.text.indexOf(event.target.value);
  });
  console.log(result);
};

為什么它返回未定義?

如果在第一個字符處找到 indexOf,則返回 0,計算結果為 FALSE。 試試看

return message.text.indexOf(event.target.value) > -1

indexOf()返回基於 0 的索引,因此您需要將其轉換為boolean以避免誤報。 event.target.value也可能為空,或者有不同的情況。

我建議確保兩個值都已定義並將兩個字符串轉換為相同的大小寫toLowerCase()在比較之前

 const messages = [{ "sender": "Bob", "text": "Hi, how are you?" }, { "sender": "James", "text": "Good, you?" } ] const result = messages.filter((message) => { return message.text.toLowerCase().indexOf("good") >= 0; }); console.log(result);

由於消息是數組,indexOf 將不起作用,您需要迭代查找單個 msg,為此使用 find(),查找多個實例使用 filter()

   const handleChange = (event) => {
          const result = message.find(i=>i.text.toLowerCase().indexOf(event.target.value.toLowerCase()));
          console.log(result);
        };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM