В чем разница между циклом в массиве и использованием array.every () - PullRequest
0 голосов
/ 31 января 2011

В чем разница между циклическим просмотром массива или использованием array.every () для назначения обратного вызова каждому элементу массива?

Ответы [ 3 ]

4 голосов
/ 31 января 2011

Функция array.every () использует функцию обратного вызова test для каждого элемента массива, но останавливается, когда эта тестовая функция возвращает false.Если вы перебираете массив, он будет проходить через каждый элемент независимо.Другими словами, функция array.every () более правильно используется для проверки того, соответствует ли каждый элемент массива определенным критериям.См. документацию для array.every () для получения более подробной информации.

2 голосов
/ 31 января 2011

Предположим, вы хотите проверить, относится ли каждый элемент вашего массива к типу IFoo и в зависимости от этого выполнять определенную операцию.

Существует как минимум 3 способа сделать это.1005 * 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
}

Я ожидаю, что второй будет самым быстрым, а третий - наиболее элегантным из-за отсутствия каких-либо временных переменных.В конечном итоге, какой из них вы выберете, зависит от характера вашей программы, а также от вашего личного стиля и философии.

0 голосов
/ 31 января 2011

В основном это вспомогательная функция, которая абстрагирует обычное использование циклов for или while в массивах. Чтобы сделать код немного быстрее и, в зависимости от ваших предпочтений, немного понятнее.

При использовании array.every вы можете получить немного больше накладных расходов, поскольку он выполняет вызов функции для каждого элемента, но это не проблема в 99,99 ...% времени, особенно на флеш-платформе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...