假设一个数组包含学生的姓名和他们各自的分数,我想检索某个学生的分数(通过检查数组元素是否包含学生的姓名(字符串))
我想出了这个,但它不起作用
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
并遍历每个项目并使用索引。而且在第一个数组中,您可以包含 students
的 objects
,这将更符合逻辑。
移动
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/