[英]Problem comparing input to array using slice function
我正在创建一个搜索栏,用于过滤一个数组,其中包含与每个键盘输入值匹配的法语城市名称。 我得到一些结果(使用控制台日志),但结果不是我所期望的,我正在使用的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
变量似乎没有改变,即使我知道我已经输入列表中的城市。
您可以使用Array.filter和Array.includes进行搜索。 像这样的东西:
$("#myInput").keyup(function () {
var searchedWord = $(this).val();
var result = cityArray.filter(c => c.toLowerCase().includes(searchedWord.toLowerCase()))
console.log(result)
});
您可以添加所需的其余代码,但想法是以这种方式“搜索”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.