微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在对象上执行删除运算符时对常量变量的奇怪更改

如何解决在对象上执行删除运算符时对常量变量的奇怪更改

我的应用中有一条路线,用于根据用户输入搜索显示建议,代码如下所示:

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 举报,一经查实,本站将立刻删除。