如何解决forEach 函数由于某种原因返回 undefined
我想创建一个带有两个参数的函数:第一个是 itemsArray,第二个是 itemName。那么这个函数应该根据天气返回 true 或 false,itemsArray 是否包含 itemName。
我使用了高阶数组方法 forEach 但由于某种原因它一直返回 undefined...
我想知道为什么?
注意:我已经想出了其他解决方案来使这个函数工作,但我想知道这个特定函数返回 undefined 的原因..如果有人能向我解释,我将不胜感激
let items = ['item-1','item-2','item-3','item-4'];
function itemExist(itemList,itemName) {
itemList.forEach( (item) => {
return item === itemName
})
}
console.log(itemExist(items,'item-3')) // expected output: true
console.log(itemExist(items,'item-5')) // expected output: false
// it return undefined instead ?
解决方法
您未定义的主要原因是因为您是从 forEach 而不是从 itemExist() 函数返回。
使用 forEach 实现以下情况的方法如下:
let items = ['item-1','item-2','item-3','item-4'];
function itemExist(itemList,itemName) {
let isItemPresent = false;
itemList.forEach( (item) => {
if(item === itemName) {
isItemPresent = true;
return;
}
})
if(isItemPresent) {
return true;
} else {
return false;
}
}
console.log(itemExist(items,'item-3')) // expected output: true
console.log(itemExist(items,'item-5')) // expected output: false
,
let items = ['item-1',itemName) {
// forEach wouldn't return anything
// forEach internal function didn't return out you from outer function
itemList.forEach( (item) => {
return item === itemName
})
/* if you won't return anything your function
it will return undefined by default
*/
}
console.log(itemExist(items,'item-3')) // expected output: undefined
console.log(itemExist(items,'item-5')) // expected output: undefined
// correct way
console.log(items.includes('item-3')) // true
console.log(items.includes('item-5')) // true
console.log(items.includes('item-9')) // false
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。