我正在创建一个搜索栏,该搜索栏将过滤一个具有法国城市名称的数组,该城市名称与每个键输入的输入值相匹配。我正在返回一些结果(使用控制台日志),但是结果不是我所期望的,并且我正在使用的IF条件似乎无法正常工作...
基于JavaScript和一些jQuery从文本文件中获取城市列表,我尝试使用indexOf
和match
函数,但似乎使用slice()
我最远。我在某处缺少将匹配结果推入新变量/数组的地方。
var cityArray = [];
$.get("liste.txt", function (data) {
cityArray = data.split("\n").sort();
console.log(cityArray);
});
$("#myInput").keyup(function () {
var searchedWord = $(this).val();
var counter = searchedWord.length;
var result = [];
console.log(searchedWord);
// console.log(typeof searchedWord);
// console.log(counter);
var matchedCities = 0;
if (counter < 3) {
return;
}
for (var i = 0; i < 100; i++) {
var city = cityArray.slice(0, cityArray.length);
console.log(city[i].slice(0, searchedWord.length));
if (city[i].slice(0, searchedWord.length) == searchedWord) {
result.push(city[i]);
console.log(result);
matchedCities++;
console.log(matchedCities);
if (matchedCities > 5) {
break;
}
}
}
});
因此,我希望在控制台日志中看到与输入匹配的城市。但是,此功能在此之前似乎已失效,因为即使我知道我已经输入了列表中的城市,result
和matchedCities
变量似乎也没有改变。
答案 0 :(得分:0)
您可以使用Array.filter和Array.includes进行搜索。像这样:
$("#myInput").keyup(function () {
var searchedWord = $(this).val();
var result = cityArray.filter(c => c.toLowerCase().includes(searchedWord.toLowerCase()))
console.log(result)
});
您可以添加所需的其余代码,但想法是以这种方式“搜索”。