2011-01-31 2 views

ответ

4

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

0

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

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

2

Предположим, вы хотите проверить, имеет ли каждый элемент вашего массива тип 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 
} 

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

Смежные вопросы