如何检测数组中的falsy值?按条件返回true或false
嘿,我来帮你搞定这两个问题!
一、实现数组有效性判断的简单方法
你需要判断数组里是否存在 ""(空字符串)、null、undefined,只要有其中一个就返回false,否则返回true。用数组的every()方法就能轻松实现,它会检查数组的每一个元素是否都满足指定条件,全部满足才返回true:
function isValidArray(arr) { // 检查每个元素都不是 ""、null、undefined return arr.every(item => item !== "" && item !== null && item !== undefined); }
测试你的示例看看效果:
console.log(isValidArray(["apple", '', undefined, null ])); // false console.log(isValidArray(["apple", 'Orange', undefined, null ])); // false console.log(isValidArray(["apple", 'Orange', "gova", null ])); // false console.log(isValidArray(["apple", 'Orange', "gova", "mango" ])); // true
这个方法简洁而且完全符合你的需求,因为它精准地排除了你指定的那几个值,不会误判其他类似0或者NaN这样的falsy值。
二、区分Falsy与Truthy值
在JavaScript里,Falsy值指的是在布尔上下文(比如if判断、逻辑运算)中会被自动转换为false的值,总共有8个:
false(布尔假)0和-0(数字零)0n(BigInt类型的零)""(空字符串)null(空值)undefined(未定义)NaN(非数字)
Truthy值则是除了上述8个之外的所有值,哪怕看起来"空"的对象或数组也属于truthy,比如:
- 非空字符串(比如
" "、"false") - 非零数字(比如
1、-1、0.1) - 所有对象和数组(哪怕是
[]、{}) - 函数、正则表达式等
举个例子直观感受下:
// Falsy值判断 if (!null) console.log("null是falsy"); if (!"") console.log("空字符串是falsy"); if (!undefined) console.log("undefined是falsy"); // Truthy值判断 if ({}) console.log("空对象是truthy"); if ([]) console.log("空数组是truthy"); if (" ") console.log("空格字符串是truthy");
需要注意的是,你的需求是只排除特定的几个falsy值(""、null、undefined),而不是所有falsy值,所以不能直接用every(item => !!item),因为这样会把0、NaN也当成无效值,不符合你的要求。
内容的提问来源于stack exchange,提问作者user2024080
相关产品推荐
相关产品推荐

