javascript - 输入搜索 = 包括不断返回 Null
问题描述
我正在尝试创建一个输入搜索来搜索从某个 API 获取的对象数组中的某些值...但是每次我使用它返回的 javascript 代码null
const search_input = document.querySelector('.input_search')
function searchCharacter() {
fetch(api)
.then(function(e){
return e.json()
})
.then(function(data) {
let characters = [];
characters.push(...data)
search_input.addEventListener('keyup' , (e) => {
const input_string = e.target.value
const filterSearch = characters.filter( e => {
return e.name.includes(input_string)
})
console.log(filterSearch)
})
})}
searchCharacter();
如果我用 e.short_name 或 e.shortnames[0] 切换 e.name 我工作得很好,但我需要该函数也查找名称,因为它们更具可读性这个数组结构的 img
编辑:问题已解决
const search_input = document.querySelector('.input_search')
function searchCharacter() {
fetch(api)
.then(function(e){
return e.json()
})
.then(function(data) {
// Creat Array and filter out the null objects.
let characters = [];
let characters_filter = [];
characters.push(...data)
characters.filter( e => {
if (e.name !== null) {
characters_filter.push(e)
} return
})
// creat input search event
search_input.addEventListener('input' , (e) => {
const input_string = e.target.value;
const filter_array = characters_filter.filter( e => {
return e.name.toLowerCase().includes(input_string)
})
console.log(filter_array)
})
})
}
searchCharacter();
PS感谢大家为我指出正确的方向
解决方案
我从您的问题中假设您的 input_string 在您的示例中是“哈希”?
这目前不适用于 e.name,因为它都是大写的,而您的搜索词是小写的。
const e = {
name: "HASH",
};
const input_string = "hash";
console.log(e.name.toLowerCase().includes(input_string)); // returns true
根据您的 input_string 的定义方式,您可能也应该将其转换为小写。
推荐阅读
- php - 表 1 记录不应出现在表 2 中
- html - 如何将excel文件读入R并将其作为html运行(我收到错误)
- python - 文件无法解码为 utf-8
- twitter - 带有 Next.js 的 Twitter API
- reactjs - 将数据从子功能组件传递到父组件 - React/Typescript
- javascript - 使用 selenium python 更改 html 元素
- regex - 在相似变体中查找部分字符串匹配
- firebase - WebP 图像作为应用程序/八位字节流文件上传。Firebase/颤振
- c# - 在 Visual Studio UI 中将 AppSetting.json 显示为“版本化或嵌套”文件
- python - 使用 Python 在 Sybase 中更改数据库