如何在javascript中检查数组是否包含布尔值?

时间:2018-02-18 19:03:06

标签: javascript arrays function

// Create a function named 'containsBool'that accepts an 

// array as a parameter.

// You can remove the comments and use the following array: 

// myArray = ['Wednesday',23,false];

// Create a for / in loop inside the function that iterates 

// through the items in the array.

// In the loop, check each array item for 'typeof' data.

// If the array contains Boolean data, return true.

// Likewise, if the array does not contain Boolean data, return false.

// Call the function and log the returned Boolean to the console.

这是我的代码,我不知道它在哪里不起作用:

var myArray = ['Wednesday', 23, true];
function containsBool(checkBool) {
  for (g in checkBool) {
    if (typeof checkBool[g] === 'boolean') {
      return true;
    } else {
      return false;
    }
  }
}

console.log(containsBool(myArray));

3 个答案:

答案 0 :(得分:0)

如果问题陈述对于实现来说不太具体(for循环或其他......),那么这可以做同样的工作:

['Wednesday', 23, true].some((x)=> typeof x === 'boolean')

答案 1 :(得分:-1)

这应该做的工作:



var someArray = ['Wednesday', 23, true];
function checkBoolean() {

    for (i = 0; i < someArray.length; i++) {
        if (typeof someArray[i] === "boolean") {
            return true;
        }
    }
}

console.log(checkBoolean(someArray));
&#13;
&#13;
&#13;

在您的情况下,不应使用for...in循环来遍历数组。 (阅读this为什么。) 您还应该查看else声明。如果要检查的条目不是布尔值(发生两次),则该函数将返回false。 return停止执行该函数,因此循环只执行一次。

答案 2 :(得分:-2)

您需要注意 return结束for...in循环。如果找到布尔值,可以提前结束它。如果循环从未找到布尔值,则它达到return false

var myArray = ['Wednesday', 23, true];
function containsBool(checkBool) {
  for (g in checkBool) {
    if (typeof checkBool[g] === 'boolean') {
      return true;
    } 
  }
  return false;
}

console.log(containsBool(myArray));