javascript - 检查数组元素的一部分是否包含特定字符串

标签 javascript arrays

假设一个数组包含学生的姓名和他们各自的分数,我想检索某个学生的分数(通过检查数组元素是否包含学生的姓名(字符串))

我想出了这个,但它不起作用

var students = [
  ['David', 80],
  ['Dane', 77],
  ['Dick', 88],
  ['Donald', 95],
  ['Dean', 68]
];


function test() {
  for (var i = 0; i < students.length; i++) {
    var name = document.getElementById("namebox").value;
    var string = students[i].toString();
    if (string.includes(name);) {
      alert(students[i][1]);
    }
  }
};
<input type="text" id="namebox" /><button type="button" onclick="test()">Click</button>

最佳答案

你正在做 students[i].toString()。这将只返回一个包含数组项的字符串。因此建议您不要执行 toString 并遍历每个项目并使用索引。而且在第一个数组中,您可以包含 studentsobjects,这将更符合逻辑。

移动

var namebox = document.getElementById("namebox");

跳出 for 循环。每次引擎都花时间在 for 循环中查找元素。因此您一次获得,多次使用。

ES6 语法

let students = [
    {name: 'David', score: 80},
    {name: 'Dane', score: 77},
    {name: 'Dick', score: 88},
    {name: 'Donald', score: 95},
    {name: 'Dean', score: 68}
];

let namebox = document.getElementById("namebox");

function test(){
  
   let name = namebox.value;

   students.forEach(item => {

     if(item.name.includes(name)){
       console.log(name, item.name, item.score);
     }

  });
  
}
<input type="text" id="namebox" />
<button type="button" onclick="test()">Click</button>

ES5 语法

var students = [
        {name: 'David', score: 80},
        {name: 'Dane', score: 77},
        {name: 'Dick', score: 88},
        {name: 'Donald', score: 95},
        {name: 'Dean', score: 68}
    ];

var namebox = document.getElementById("namebox");

function test(){
  
   var name = namebox.value;

   for(var i = 0; i < students.length; i++){

      if(students[i].name.indexOf(name) !== -1)  {
         console.log(name,students[i].name,students[i].score);
      }

   }
  
}
<input type="text" id="namebox" />
<button type="button" onclick="test()">Click</button>

关于javascript - 检查数组元素的一部分是否包含特定字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41648557/

相关文章:

javascript - 不要使用 Jquery 获取适当的 div

javascript - 与 2 个触摸事件 javascript 插件冲突,以错误的顺序分层触摸事件?

php - 引用 - 这个错误在 PHP 中意味着什么?

java - 使用 while 循环而不是 for 循环创建二维数组以提高运行时效率

c++ - 如何在 C++ 中表达一系列数组位置?

java - 在 2v2 游戏中切换回合

javascript - 当达到字符限制时,如何在字符串中添加换行符而不破坏单词?

javascript - dojo/date/locale - 空日期

javascript - Meteor 服务器实例化

javascript - 如何添加数组的对象属性并更新它?