如何在数组属性中搜索项目? [复制]

Posted

技术标签:

【中文标题】如何在数组属性中搜索项目? [复制]【英文标题】:How to search for items in array properties? [duplicate] 【发布时间】:2022-01-21 06:29:40 【问题描述】:

我正在尝试制作一个简单的网站(没有 CSS3)来搜索数组中的项目。我实现这一目标的方法是在数组中的项目的“标题”或“描述”属性中进行搜索。如果标题包含输入中的关键字,我的预期结果是在控制台中获得 titleOfItem + 'fizz'。相反,我收到以下错误:

这是我的 HTML5 代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>replit</title>
    <link href="style.css" rel="stylesheet" type="text/css" />
  </head>
  <body>
    <input id="keywordText" type="text">
    <button id="submit" onclick="search()">Search</button>
    <script src="script.js"></script>
  </body>
</html>

这是我的 JS 代码:

const items = 
  john:title:'john', desc:"doe", elem:document.getElementById('john'),
  jane:title:'jane', desc:"doe", elem:document.getElementById('jane')


let allItems = []
for (var key in items) 
  allItems.push(items[key])




function search() 
  let keyword = document.getElementById('keywordText').value;
  for (let count = 0; allItems.length; count++) 
    let titleOfItem = allItems[count].title
    if (titleOfItem.includes(keyword)) 
      console.log(titleOfItem + ' fizz')
     else 
      console.log(titleOfItem + ' buzz')
    
  

我在这段代码中做错了什么吗?另外,出于组织目的,有没有办法直接从第一个数组中获取这些信息?

【问题讨论】:

这能回答你的问题吗? How for...of Loop Statement Works in javascript?(ECMAScript 6) 这就是你应该使用for..Eachfor..of的原因,这样你就不必关心count &lt; allItems.length之类的无关紧要的事情,只需编写逻辑即可。您也可以将 forEach 用作 allItems.forEach(( title ) =&gt; if(title.includes(keyword)) console.log( title + ' fizz' ) else console.log( title + ' buzz' ) ) 您已将以下答案标记为已接受。这表明问题已经解决。您也不需要将该信息添加到您的问题正文中。 【参考方案1】:

原因是因为标题未定义。这可能是因为在您的代码中没有正确复制 title,或者是因为您将数组遍历到 outOfBounds,其中 title 不可访问且未定义。

修复这部分:

for (let count = 0; count < allItems.length; count++) 
    let titleOfItem = allItems[count].title
    if (titleOfItem.includes(keyword)) 
      console.log(titleOfItem + ' fizz')
     else 
      console.log(titleOfItem + ' buzz')
    
  

应该这样做,但如果不检查 allItems 的值以查看它是否始终具有属性

【讨论】:

【参考方案2】:

您可能错过了 for 循环中的条件。将您的代码更改为:

for (let count = 0; count &lt; allItems.length; count++)

【讨论】:

【参考方案3】:
for (let count = 0; count < allItems.length; count++) 


您收到错误是因为您没有指定计数值将在 for 循环中持续多长时间。您可以通过像这样更新代码来解决问题。

【讨论】:

哦!我已经习惯了 Lua,以至于我忘记了这个重要的步骤!谢谢!

以上是关于如何在数组属性中搜索项目? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 在 JavaScript 数组中搜索字符串? [复制]

如何将对象存储在数组中? [复制]

(猫鼬)如何在用户集合中搜索会话数组属性内的对象内的令牌

如何在修改其副本时避免更新原始数组? [复制]

如何删除数组中的项目? [复制]

如何将一个数组推入另一个数组元素中作为 JavaScript 中的新属性? [复制]