Javascript:过滤数组项的第一个字母,然后过滤其他字母

标签 javascript

我有一系列城市,并使用搜索输入按城市名称对其进行过滤。例如,如果我输入“b”,我会看到巴塞罗那、柏林、布加勒斯特和布达佩斯,还会看到都柏林和里斯本(因为它们包含字母“b”。)

我正在寻找一种方法,首先过滤我输入的第一个字母,然后过滤其他字母。例如,如果我输入“b”,我应该只会看到巴塞罗那、柏林、布加勒斯特和布达佩斯。如果我输入“bu”,它现在应该显示布达佩斯和布加勒斯特。我怎样才能得到这个结果?

这是我的实际代码:

{this.props.cities
.filter(city => city.name.toLowerCase().indexOf(this.state.searchTerm) !== -1)
.map(item => ( <p> {item.name} </p> ))}

最佳答案

不要测试 indexOf() 是否返回 -1 以外的内容,而是测试它是否恰好返回 0。这意味着它匹配城市名称的开头。

this.props.cities
.filter(city => city.name.toLowerCase().indexOf(this.state.searchTerm) === 0)
.map(item => ( <p> {item.name} </p> ))

关于Javascript:过滤数组项的第一个字母,然后过滤其他字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58894986/

相关文章:

javascript - React 中 <select> 时 onChange 事件无法按预期工作

javascript - 您如何在 JavaScript 游戏中编写跳跃代码?

javascript - 停止渲染或卡住指定 DOM 元素的 View

javascript - 如何使用 Materializecss 在同一个 div 上显示两个工具提示?

javascript - 'var'是重新访问时分配新内存还是覆盖?

c# - 在 C# 代码中嵌入 CSS/jQuery 代码不好吗?

javascript - 不正确的 header 会阻止 Chrome 循环播放 HTML5 音频

javascript - Vuejs可拖动排序列表

Javascript - 在每个新行中复制日期/时间

javascript - TextEncoder 给出额外的字节,TextDecoder 为具有负值的数组字节给出错误的字符串