循环数组和使用array.every()之间的区别是什么

循环数组或使用array.every()为每个数组元素分配回调之间的区别是什么?     
已邀请:
array.every()函数对每个数组元素使用测试回调函数,但一旦测试函数返回false就停止。如果循环遍历数组,它将遍历每个元素,无论如何。换句话说,array.every()函数更适合用于测试数组的每个元素是否符合某个条件。有关更多详细信息,请参阅array.every()的文档。     
假设您要检查数组中的每个元素是否都是
IFoo
类型,并根据它执行某个操作。 至少有3种方法可以做到这一点。 1.迭代
var allFoo:Boolean = true;
for (var i:int = 0; i < array.length; i++) {
  if (!(array[i] is IFoo)) {
    allFoo = false;
    break;
  }
}

if (allFoo) {
  // perform operation
} else {
  // do something else
}
2.枚举
var allFoo:Boolean = true;
for each (var e:* in array) {
  if (!(e is IFoo)) {
    allFoo = false;
    break;
  }
}

if (allFoo) {
  // perform operation
} else {
  // do something else
}
3. Array.every()
function isElementFoo(item:*, index:int, array:Array):Boolean
{
  return (item is IFoo);
}

if (array.every(isElementFoo)) {
  // perform operation
} else {
  // do something else
}
我希望第二个是最快的,而第三个是最优雅的,因为没有任何临时变量。最终选择哪一个取决于您的计划的性质,以及您自己的个人风格和理念。     
它基本上是一个便利函数,它抽象了数组上for或while循环的常见用法。为了使代码更快一些,并根据您的喜好更清楚地阅读。 你会得到一个更大的开销使用array.every,因为它为每个元素执行一个函数调用,但这是99.99%的无问题,尤其是在flash平台上。     

要回复问题请先登录注册