Merge pull request #62 from MhMadHamster/patch-1

Patch 1
This commit is contained in:
Ilya Kantor 2015-07-07 00:05:10 +03:00
commit d300d60699
5 changed files with 6 additions and 6 deletions

View file

@ -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

View file

@ -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`.
Пример работы:

View file

@ -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> &lt; n</code>.</li>
<li>Все оставшиеся незачеркнутыми числа -- простые.</li>
<li>Все оставшиеся не зачеркнутыми числа -- простые.</li>
</ol>
Посмотрите также [анимацию алгоритма](sieve.gif).

View file

@ -298,7 +298,7 @@ for (var key in arr) {
<ol>
<li>Цикл `for..in` выведет *все свойства* объекта, а не только цифровые.
В браузере, при работе с объектами страницы, встречаются коллекции элементов, которые по виду как массивы, но имеют дополнительные нецифровые свойства. При переборе таких "похожих на массив" колекций через `for..in` эти свойства будут выведены, а они как раз не нужны.
В браузере, при работе с объектами страницы, встречаются коллекции элементов, которые по виду как массивы, но имеют дополнительные нецифровые свойства. При переборе таких "похожих на массив" коллекций через `for..in` эти свойства будут выведены, а они как раз не нужны.
Бывают и библиотеки, которые предоставляют такие коллекции. Классический `for` надёжно выведет только цифровые свойства, что обычно и требуется.
</li>

View file

@ -321,6 +321,6 @@ alert( "Разница в " + (timeRecursion / timeLoop) + " раз" );
Различие в скорости на таком примере может составлять, в зависимости от интерпретатора, 2-10 раз.
Вообще, этот пример -- не показателен. Ещё раз обращаю ваше внимание на то, что такие искусственные "микротесты" часто врут. Правильно их делать -- отдельная наука, которая выходит за рамки этой главы. Но и на практике ускорение в 2-10 раз оптимизацией по количеству объектв (и вообще, любых значений) -- отнюдь не миф, а вполне достижимо.
Вообще, этот пример -- не показателен. Ещё раз обращаю ваше внимание на то, что такие искусственные "микротесты" часто врут. Правильно их делать -- отдельная наука, которая выходит за рамки этой главы. Но и на практике ускорение в 2-10 раз оптимизацией по количеству объектов (и вообще, любых значений) -- отнюдь не миф, а вполне достижимо.
В реальной жизни в большинстве ситуаций такая оптимизация несущественна, просто потому что "JavaScript и так достаточно быстр". Но она может быть эффективной для "узких мест" кода.