【发布时间】: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