在JavaScript数组中检查所有值的真假性
如在之前的一篇文章中提到的,JavaScript在布尔上下文中使用类型转换,例如条件语句。这意味着根据在布尔上下文中的求值方式,值被认为是真值或假值。结合使用 Boolean
函数和对一组值进行真值检查变得非常简单。
检查数组中的所有值是否为真值
使用 Array.prototype.every()
,我们可以轻松地检查数组中的所有值是否为真值。Boolean
函数可以作为默认回调函数使用,以检查所有值是否为真值,但也可以指定自定义回调函数。
const all = (arr, fn = Boolean) => arr.every(fn);
all([4, 2, 3], x => x > 1); // true
all([1, 2, 3]); // true
检查数组中是否有任何值为真值
使用 Array.prototype.some()
,我们可以检查数组中是否有任何值为真值。Boolean
函数可以作为默认回调函数使用,以检查是否有任何值为真值,但也可以指定自定义回调函数。
const any = (arr, fn = Boolean) => arr.some(fn);
any([0, 1, 2, 0], x => x >= 2); // true
any([0, 0, 1, 0]); // true
检查数组中的所有值是否为假值
类似地,Array.prototype.some()
可以用来检查数组中是否有任何值为假值。同样,Boolean
函数可以作为默认的回调函数,但你也可以指定一个自定义的回调函数。
const none = (arr, fn = Boolean) => !arr.some(fn);
none([0, 1, 3, 0], x => x == 2); // true
none([0, 0, 0]); // true
检查所有对象是否具有给定的属性
进一步地,Array.prototype.every()
可以用来检查数组中的所有对象是否具有给定的属性。这对于验证数据非常有用。简单地检查属性的存在与否将返回一个真值或假值,取决于属性是否存在。
const truthCheckCollection = (collection, pre) =>
collection.every(obj => obj[pre]);
truthCheckCollection(
[
{ user: 'Tinky-Winky', sex: 'male' },
{ user: 'Dipsy', sex: 'male' },
],
'sex'
); // true