commit
d300d60699
5 changed files with 6 additions and 6 deletions
|
@ -13,7 +13,7 @@ function find(array, value) {
|
|||
|
||||
Однако, в нем ошибка, т.к. сравнение `==` не различает `0` и `false`.
|
||||
|
||||
Поэтому лучше использовать `===`. Кроме того, в современном стандарте JavaScript существует встроенная фунция <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf">Array#indexOf</a>, которая работает именно таким образом. Имеет смысл ей воспользоваться, если браузер ее поддерживает.
|
||||
Поэтому лучше использовать `===`. Кроме того, в современном стандарте JavaScript существует встроенная функция <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf">Array#indexOf</a>, которая работает именно таким образом. Имеет смысл ей воспользоваться, если браузер ее поддерживает.
|
||||
|
||||
```js
|
||||
//+ run
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
[importance 3]
|
||||
|
||||
Создайте фунцию `filterRange(arr, a, b)`, которая принимает массив чисел `arr` и возвращает новый массив, который содержит только числа из `arr` из диапазона от `a` до `b`. То есть, проверка имеет вид `a ≤ arr[i] ≤ b`.
|
||||
Создайте функцию `filterRange(arr, a, b)`, которая принимает массив чисел `arr` и возвращает новый массив, который содержит только числа из `arr` из диапазона от `a` до `b`. То есть, проверка имеет вид `a ≤ arr[i] ≤ b`.
|
||||
Функция не должна менять `arr`.
|
||||
|
||||
Пример работы:
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
<li>Создать список последовательных чисел от `2` до `n`: `2, 3, 4, ..., n`.</li>
|
||||
<li>Пусть `p=2`, это первое простое число.</li>
|
||||
<li>Зачеркнуть все последующие числа в списке с разницей в `p`, т.е. `2*p, 3*p, 4*p` и т.д. В случае `p=2` это будут `4,6,8...`.</li>
|
||||
<li>Поменять значение `p` на первое незачеркнутое число после `p`.</li>
|
||||
<li>Поменять значение `p` на первое не зачеркнутое число после `p`.</li>
|
||||
<li>Повторить шаги 3-4 пока <code>p<sup>2</sup> < n</code>.</li>
|
||||
<li>Все оставшиеся незачеркнутыми числа -- простые.</li>
|
||||
<li>Все оставшиеся не зачеркнутыми числа -- простые.</li>
|
||||
</ol>
|
||||
|
||||
Посмотрите также [анимацию алгоритма](sieve.gif).
|
||||
|
|
|
@ -298,7 +298,7 @@ for (var key in arr) {
|
|||
<ol>
|
||||
<li>Цикл `for..in` выведет *все свойства* объекта, а не только цифровые.
|
||||
|
||||
В браузере, при работе с объектами страницы, встречаются коллекции элементов, которые по виду как массивы, но имеют дополнительные нецифровые свойства. При переборе таких "похожих на массив" колекций через `for..in` эти свойства будут выведены, а они как раз не нужны.
|
||||
В браузере, при работе с объектами страницы, встречаются коллекции элементов, которые по виду как массивы, но имеют дополнительные нецифровые свойства. При переборе таких "похожих на массив" коллекций через `for..in` эти свойства будут выведены, а они как раз не нужны.
|
||||
|
||||
Бывают и библиотеки, которые предоставляют такие коллекции. Классический `for` надёжно выведет только цифровые свойства, что обычно и требуется.
|
||||
</li>
|
||||
|
|
|
@ -321,6 +321,6 @@ alert( "Разница в " + (timeRecursion / timeLoop) + " раз" );
|
|||
|
||||
Различие в скорости на таком примере может составлять, в зависимости от интерпретатора, 2-10 раз.
|
||||
|
||||
Вообще, этот пример -- не показателен. Ещё раз обращаю ваше внимание на то, что такие искусственные "микротесты" часто врут. Правильно их делать -- отдельная наука, которая выходит за рамки этой главы. Но и на практике ускорение в 2-10 раз оптимизацией по количеству объектв (и вообще, любых значений) -- отнюдь не миф, а вполне достижимо.
|
||||
Вообще, этот пример -- не показателен. Ещё раз обращаю ваше внимание на то, что такие искусственные "микротесты" часто врут. Правильно их делать -- отдельная наука, которая выходит за рамки этой главы. Но и на практике ускорение в 2-10 раз оптимизацией по количеству объектов (и вообще, любых значений) -- отнюдь не миф, а вполне достижимо.
|
||||
|
||||
В реальной жизни в большинстве ситуаций такая оптимизация несущественна, просто потому что "JavaScript и так достаточно быстр". Но она может быть эффективной для "узких мест" кода.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue