因此,我正在测试JS include()方法,因此创建了一个搜索输入字段,可以在其中搜索通过实时重新渲染创建的注释。现在我的问题是: 当我完全不传递任何搜索文本时,将显示所有注释,但是当我输入字符或单词时,注释将立即被过滤。 示例代码:
const filters = {
searchText: ''
}
// Render application notes
const renderNotes = (notes, filters) => {
const filteredNotes = notes.filter((note) => {
return note.title.toLowerCase().includes(filters.searchText.toLowerCase())
})
document.querySelector('#notes').innerHTML = ''
filteredNotes.forEach((note) => {
const noteEl = generateNoteDOM(note)
document.querySelector('#notes').appendChild(noteEl)
})
}
据此我了解到,在这种情况下总是返回true。 希望对此主题进行任何澄清!
谢谢!
答案 0 :(得分:4)
.includes()
函数必须与.indexOf()
的功能相匹配以保持一致性,而.indexOf()
总是与任何目标字符串中的空字符串匹配。 From MDN:
空字符串searchValue将在0到str.length之间的任何索引处匹配。
这是小违反直觉的,但是请考虑以下问题:
var str = "something";
console.log(str.includes("")); // Imagine this returns false ...
str += "";
console.log(str.includes("")); // !!