JavaScript 数组Array-every()方法

时间:2019-08-20 13:50:49  来源:igfitidea点击:

说明

JavaScript数组每个方法测试数组中的所有元素是否都通过了由提供的函数实现的测试。

语法

array.every(callback[, thisObject]);

参数

this—执行回调时用作this对象的对象。

callback−用于测试每个元素的函数。
传递给callback的参数有:

  1. value - 当前索引的值。
  2. index - 当前索引
  3. array - 数组

返回值

如果此数组中的每个元素都满足提供的测试函数,则返回true。
如果函数返回一个false,它将中断循环。

兼容性

此方法是ECMA-262标准的JavaScript扩展;因此,它可能不会出现在该标准的其他实现中。要使其正常工作,我们需要在脚本的顶部添加以下代码。

if (!Array.prototype.every) {
   Array.prototype.every = function(fun /*, thisp*/) {
      var len = this.length;
      if (typeof fun != "function")
      throw new TypeError();
      
      var thisp = arguments[1];
      for (var i = 0; i < len; i++) {
         if (i in this && !fun.call(thisp, this[i], i, this))
         return false;
      }
      return true;
   };
}

示例 - 基本用法

var array = [2, 4, 8];

var result = array.every(function () {
	console.log(this);
	return true;
});

console.log(result);  // true

示例 - 使用callback参数

var arr = [2, 4, 8];

var result = arr.every(function (value, index, array) {
	console.log(value, index, array);
	return true;
});

console.log(result);  // true

示例 - 判断数组中所有元素是否大于某个值

if (!Array.prototype.every) {
   Array.prototype.every = function(fun /*, thisp*/) {
      var len = this.length;
      if (typeof fun != "function")
      throw new TypeError();
      
      var thisp = arguments[1];
      for (var i = 0; i < len; i++) {
         if (i in this && !fun.call(thisp, this[i], i, this))
         return false;
      }
      return true;
   };
}
function isBigEnough(element, index, array) {
   return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
console.log("第一个测试值: " + passed );  // 第一个测试值: false

passed = [12, 54, 18, 130, 44].every(isBigEnough);
console.log("第二个测试值: " + passed );  // 第二个测试值: true

示例 - 为this传入一个自定义对象

var array = [2, 4, 8];

var result = array.every(function () {
	console.log(this);
	return true;
}, document.location);

console.log(result);  // true

示例 - 模拟测试不通过的情况:

var array = [2, 4, 8];

var result = array.every(function (value) {
	console.log(this);
	if (value === 4) {
		return 0;
	}
	return true;
});

console.log(result);  // false