JavaScript:使用forEach查看数组是否包含特定的数字值

时间:2019-05-28 19:21:09

标签: javascript arrays function input element

我有下面的代码。我故意在这种情况下尝试使用forEach。

function check(arr, el) {

  arr.forEach((element) => {

    console.log(element)

    if (element === el) {

       return true
    }
  })
}

check([1, 2, 3, 4, 5], 3)

我期望代码返回true,因为el值3在数组中。但是相反,它返回未定义。我究竟做错了什么?

4 个答案:

答案 0 :(得分:4)

forEach不要return(表示未定义),可以使用some

function check(arr, el) {
  return arr.some( element => element === el)
}

console.log(check([1, 2, 3, 4, 5], 3))

如果要使用forEach而不是使用变量存储值,而不要稍后从函数返回

function check(arr, el) {
  let found = false
  
  arr.forEach((element) => {
    if (element === el && !found){
      found = true
    }
  })
  return found
}



console.log(check([1, 2, 3, 4, 5], 3))

答案 1 :(得分:1)

不能在return语句中使用forEach

注意:该答案仅 ,因为您需要使用forEach。 通常,您将始终使用some()

function check(arr, el) {
  let found = false;
  arr.forEach((element) => {
    console.log(element)
    if (element === el) {
      found = true;
    }
  });
  return found;
}



console.log( check([1, 2, 3, 4, 5], 3));

答案 2 :(得分:0)

仅使用OP的上下文。因为必须使用forEach。

function check(arr, el) {

  let found = false;

  arr.forEach((element) => {
    console.log(element)
    if (element === el){
        found = true;
    }
  })

  return found;
}

答案 3 :(得分:0)

如果要使用ui-sref="library",则需要在找到匹配项时更新变量。默认情况下,Array.forEach返回ui-sref-active。没有forEachbreak out of the forEach的方式。

由于您只是在寻找简单的元素匹配项,因此只需使用undefined

build in

Array.some为您提供了迭代器功能,在这种情况下,您实际上不需要。

使用Array.includes

let check = (arr, el) => arr.includes(el)

console.log(check([1, 2, 3, 4, 5], 3))