【问题标题】:Searching through concated arrays using filter function使用过滤器函数搜索 concat 数组
【发布时间】:2019-05-12 09:03:57
【问题描述】:

我创建了一些数组并想在其中搜索一些字符串数据。所以我发现我可以将所有数组合并为一个,并且应该通过它搜索我需要搜索的数据。但问题是当我尝试搜索最终数组时,它给了我错误。在下面发布代码。

const filters = {
    listName: '',
    name: '',
    number: '',
    designation: ''
};

let mpc = getSavedArray('mpcData');
let mpe = getSavedArray('mpeData');
let div = getSavedArray('divData');
let dist = getSavedArray('distData');
let teh = getSavedArray('tehData');

const allArrays = function () {
    return (mpe.concat(mpc, dist, div, teh));
};
console.log(allArrays());

const searchData = function (arrays, filters) {
    const filteredArray = arrays.filter(function (query) {
        return query.name.toLowerCase().includes(filters.name.toLowerCase())
    })
    document.querySelector('#search-results').innerHTML = ''
    filteredArray.forEach(function (query) {
        const allResult = generateDomElement(query)
        document.querySelector('#search-results').appendChild(allResult)
    })
};

searchData(allArrays, filters);

document.querySelector('#search-record').addEventListener('input', function(e){
    filters.name = e.target.value
    searchData(allArrays, filters);
})

【问题讨论】:

  • 它带有“TypeError: arrays.filter is not a function”的错误
  • 那是因为它不是。您传入的是allArrays,它是一个函数,而不是一个数组。
  • searchData 的第一个参数应该是一个数组,但有时您会传递一个函数 (allArrays) 作为第一个参数。您可能希望传递调用此函数的结果(例如:searchData(allArrays(), filters)

标签: javascript arrays search filter


【解决方案1】:

您将函数allArrays 本身传递给searchData。你应该调用它。

searchData(allArrays, filters);

应该是

searchData(allArrays(), filters);

【讨论】:

    猜你喜欢
    • 2020-05-30
    • 1970-01-01
    • 2022-01-02
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    相关资源
    最近更新 更多