【问题标题】:when I pass an empty string into includes("") will it always return true?当我将一个空字符串传递给 include("") 时,它是否总是返回 true?
【发布时间】:2019-01-06 20:06:51
【问题描述】:

所以,我正在测试 JS 的 includes() 方法,所以我创建了一个搜索输入字段,我可以在其中搜索通过实时重新渲染创建的注释。现在我的问题是: 当我根本不传递任何搜索文本时,会显示所有注释,但是当我输入字符或单词时,注释会立即被过滤掉。 示例代码:

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 .. 希望对这个主题有任何澄清!

谢谢!

【问题讨论】:

  • 这不是预期和首选的解决方案吗?
  • 是的,我只是想知道,如果我的逻辑是正确的...... :)

标签: javascript methods


【解决方案1】:

.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("")); // !!

【讨论】:

  • 感谢您的及时答复!
猜你喜欢
  • 2018-11-18
  • 1970-01-01
  • 2020-10-11
  • 2015-02-20
  • 2022-01-22
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
相关资源
最近更新 更多