繁体   English   中英

使用切片函数比较输入到数组的问题

[英]Problem comparing input to array using slice function

我正在创建一个搜索栏,用于过滤一个数组,其中包含与每个键盘输入值匹配的法语城市名称。 我得到一些结果(使用控制台日志),但结果不是我所期望的,我正在使用的IF条件似乎不起作用...

基于JavaScript和一个小jQuery从文本文件中获取我的城市列表,我尝试使用indexOfmatch函数,但使用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;
            }
        }
    }
});

所以我希望在控制台日志中看到匹配的城市输入。 但是,在此之前函数似乎崩溃了,因为resultmatchedCities变量似乎没有改变,即使我知道我已经输入列表中的城市。

您可以使用Array.filterArray.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM