2014-01-31 4 views
0

Мне было интересно, какие функции из Array.prototype.every и Array.prototype.filter быстрые в javascript? Разница, которую я знаю, заключается в том, что каждый может быть остановлен, возвращая false, и фильтр не может остановиться, вернув false. Помимо этой разницы есть ли другие? И если у кого среди этого есть индексирование?Разница между каждым фильтром и javascript?

+0

фильтр Быстрее. Проверьте: http://jsperf.com/filter-and-every-vs-filter-vs-remove – WhatisSober

+0

@NabRaj, что jsperf фактически не тестирует методы прототипа массива, о которых идет речь. – Jeremy

ответ

8

функции делают совершенно разные вещи.

Array.prototype.filter создаст массив всех элементов, соответствующих заданным вами условие в функции обратного вызова

function isBigEnough(element) { 
    return element >= 10; 
} 
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough); 
// filtered is [12, 130, 44] 

Array.prototype.every возвращает истину, если каждый элемент массива соответствует свое состояние в обратном вызове

function isBigEnough(element, index, array) { 
    return (element >= 10); 
} 
var passed = [12, 5, 8, 130, 44].every(isBigEnough); 
// passed is false 
passed = [12, 54, 18, 130, 44].every(isBigEnough); 
// passed is true 
0

Array.prototype.every:

Определяет, будут ли все члены массива, как a[*] == b[*] удовлетворяют заданному тесту. (полная версия).

Array.prototype.filter:

так же, как тестирование x exists IN [*] (правда, если по крайней мере один соответствует)

+0

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

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