You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何快速检查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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:28:17