[英]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.