Underscore.js _.every 函数

  • Post category:jquery

Underscore.js是一个流行的JavaScript工具库,它提供了许多实用的函数,方便了开发人员的工作。其中一个实用的函数是_.every函数。下面我们来详细讲解一下这个函数的完整攻略。

什么是 _.every 函数?

Underscore.js中,_.every函数用于判断一个集合中的每个元素都是否满足某个条件。如果集合中的所有元素都满足条件,则函数返回true;如果有一个元素不满足条件,则函数返回false。

使用 _.every 函数的语法和参数

_.every函数的语法如下:

_.every(collection, [predicate], [context])

该函数有三个参数:

  • collection:要遍历的集合(可以是数组、对象或类数组对象)。
  • predicate:一个用于测试每个元素是否满足条件的函数,默认为检测元素是否为真。如果该参数是一个字符串,将会使用 _.property 函数来创建一个断言函数。
  • context:指定 predicate 函数中 this 的值。

使用 _.every 函数的示例

下面是两个示例说明如何使用_.every函数。

示例一:判断数组中的所有元素是否大于0

考虑一个数组[1, 3, 5, 7],现在要判断这个数组中的所有元素是否大于0。可以使用_.every函数来实现:

var arr = [1, 3, 5, 7];
var result = _.every(arr, function(num) {
  return num > 0;
});
console.log(result);  // true

上面的代码中,arr是要遍历的数组,function(num) { return num > 0; }是一个用于测试数组中的每个元素是否大于0的函数。_.every函数将依次传入数组中的所有元素,对于每个元素,都会执行一次函数检测其是否大于0。由于数组中的所有元素都大于0,因此_.every函数返回true。

示例二:判断对象中的所有属性值是否为偶数

考虑一个对象{a: 2, b: 4, c: 5},现在要判断这个对象中所有的属性值是否为偶数。可以使用_.every函数来实现:

var obj = {a: 2, b: 4, c: 5};
var result = _.every(obj, function(num) {
  return num % 2 == 0;
});
console.log(result);  // false

上面的代码中,obj是要遍历的对象,function(num) { return num % 2 == 0; }是一个用于测试对象中的每个属性值是否为偶数的函数。_.every函数将依次传入对象中的所有属性值,对于每个属性值,都会执行一次函数检测其是否为偶数。由于对象中的属性c的值为5,不是偶数,因此_.every函数返回false。

总之,_.every函数是一个非常实用的函数,可以方便地判断集合中是否满足某个条件。