问题描述
我的应用中有一条路线,用于根据用户输入搜索和显示建议,代码如下所示:
const allItems = getItems(); // returns an array copied from original array using spread operator
// each item in array is an object like this :
// {
// name : 'some string',// value : 'some string value',// searchTag : 'string that contains both name and value'
// }
router.get("/search",async (req,res) => {
let str = req.query.search;
let _suggests = allItems.filter((x) =>
x.searchTag.toLowerCase().includes(str.toLowerCase())
);
//_suggests.forEach((item) => delete item.searchTag);
return res.status(200).send({
options: _suggests.slice(0,10),});
});
它按预期工作,但是当我取消注释此行时会出现问题:
_suggests.forEach((item) => delete item.searchTag);
在这种情况下,它只响应对服务器的第一个请求,对于所有其他请求,在控制台中抛出此错误:TypeError: Cannot read property 'toLowerCase' of undefined
它发生在这部分:x.searchTag.toLowerCase()
我已经通过控制台检查了数组,并且 searchTag 字段在第一次请求后被删除,所以过滤器功能没有问题,我很困惑常量变量的值如何像这样改变以及当我应用更改时它如何改变到另一个数组
感谢您的帮助!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)