微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

forEach 函数由于某种原因返回 undefined

如何解决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 举报,一经查实,本站将立刻删除。