如何快速检查JavaScript数组是否为仅含0和1的二进制数组
如何快速判断数组是否仅包含0和1,并实现isArrayBool()函数
嘿,这个问题其实很好解决,结合你提到的布尔值方案,我们可以利用JavaScript里0和1对应布尔值的类型转换特性来实现,我给你详细拆解下:
核心思路(你说的布尔值方案)
你提到的“将布尔值true赋值为0、false赋值为1”其实可以反过来利用:在JS中,0会被转换为false,1会被转换为true;而把布尔值转回数字时,false对应0,true对应1。基于这个特性,我们可以验证数组中的每个元素,在“转布尔值→转数字”的过程后,是否和原元素完全一致——只有0和1能满足这个条件,其他任何值都会不匹配。
实现isArrayBool()函数
按照这个思路,我们可以用数组的every()方法来遍历验证所有元素:
function isArrayBool(array) { // 对每个元素执行:转布尔值→转数字,然后和原元素对比 return array.every(item => Number(Boolean(item)) === item); }
测试示例
我们用你给出的数组和其他测试用例验证下:
// 符合要求的数组 const validArray = [1,1,1,1,0,0,0,0]; console.log(isArrayBool(validArray)); // 输出: true // 包含其他数字的数组 const invalidArray1 = [1,0,2]; console.log(isArrayBool(invalidArray1)); // 输出: false // 包含非数字类型的数组 const invalidArray2 = [1,0,null]; console.log(isArrayBool(invalidArray2)); // 输出: false
补充:更直观的实现方式
如果你觉得布尔值转换的思路有点绕,也可以直接判断每个元素是否是0或1,代码更直白:
function isArrayBool(array) { return array.every(item => item === 0 || item === 1); }
这个方法的逻辑更直接,同样能高效完成判断,适合需要可读性优先的场景。
内容的提问来源于stack exchange,提问作者William Merritt
相关产品推荐
相关产品推荐

