javascript - JavaScript 返回函数不正确的结果
问题描述
我有一个数组和一个函数 checkMember。我想检查一下,该成员是否在数组中?但 checkMember 函数只有在我调用 checkMember('Cody') 时才为真。我不明白。请帮我!
var fe01 = [
{name: 'Giang', fee: 5, fea: 6},
{name: 'Zack', fee: 7, fea: 7},
{name: 'Henry', fee: 8, fea: 8},
{name: 'Cody', fee: 9, fea: 9}
];
function checkMember(name){
var result;
for(var i = 0; i < fe01.length; i++){
console.log(`${fe01[i].name}`)
if(fe01[i].name == name){
//console.log(true);
result = true;
} else{
//console.log(false)
result = false;
}
}
return result;
}
console.log(checkMember('Cody'));//true
console.log(checkMember('Giang'));//false
解决方案
有很多方法可以解决这个问题。
使用for..loop
withbreak
语句:
var fe01 = [
{name: 'Giang', fee: 5, fea: 6},
{name: 'Zack', fee: 7, fea: 7},
{name: 'Henry', fee: 8, fea: 8},
{name: 'Cody', fee: 9, fea: 9}
];
function checkMember(name){
var result;
for(var i = 0; i < fe01.length; i++){
//console.log(`${fe01[i].name}`)
if(fe01[i].name == name){
//console.log(true);
result = true;
break; // jump out of the loop here
} else{
//console.log(false)
result = false;
}
}
return result;
}
console.log(checkMember('Cody'));//true
console.log(checkMember('Giang'));//true
使用some()
方法:
var fe01 = [ {name: 'Giang', fee: 5, fea: 6}, {name: 'Zack', fee: 7, fea: 7},
{name: 'Henry', fee: 8, fea: 8}, {name: 'Cody', fee: 9, fea: 9}];
function checkMember(search){
return fe01.some(({name}) => name == search);
}
console.log(checkMember('Cody'));//true
console.log(checkMember('Giang'));//true
console.log(checkMember('abc'));//false
推荐阅读
- scala - 带有下划线的 Scala 字符串插值
- c++ - 尝试添加数组元素给出零
- node.js - 在 vs 代码中调试用 typescript 节点编写的 jasmine 测试
- javascript - 如何在悬停时获取 img src 值,使用纯 JavaScript 即时编辑和返回它?
- javascript - 单击按钮时,如何添加在画布上水平移动的随机大小的黑色块?
- iterator - 是否可以有条件地应用迭代器转换?
- php - 如何将多个 where 子句变量传递给 bind_param?
- octobercms - 保存用户个人资料详细信息,十月 CMS
- firebase - 是否可以从 linux shell 脚本从 Cloud Storage 检索文档?
- bitbucket - 在 bitbucket 新界面上找不到同步链接和比较按钮