renovations

This commit is contained in:
Ilya Kantor 2015-01-11 01:54:57 +03:00
parent 4b8b168fd2
commit c7d4c7e3ff
172 changed files with 869 additions and 244 deletions

View file

@ -0,0 +1,61 @@
Возможное решение:
```js
function find(array, value) {
for(var i=0; i<array.length; i++) {
if (array[i] == value) return i;
}
return -1;
}
```
Однако, в нем ошибка, т.к. сравнение `==` не различает `0` и `false`.
Поэтому лучше использовать `===`. Кроме того, в современном стандарте JavaScript существует встроенная фунция <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf">Array#indexOf</a>, которая работает именно таким образом. Имеет смысл ей воспользоваться, если браузер ее поддерживает.
```js
//+ run
function find(array, value) {
if (array.indexOf) { // если метод существует
return array.indexOf(value);
}
for(var i=0; i<array.length; i++) {
if (array[i] === value) return i;
}
return -1;
}
var arr = ["a", -1, 2, "b"];
var index = find(arr, 2);
alert(index);
```
... Но еще лучшим вариантом было бы определить `find` по-разному в зависимости от поддержки браузером метода `indexOf`:
```js
// создаем пустой массив и проверяем поддерживается ли indexOf
if ( [].indexOf ) {
var find = function(array, value) {
return array.indexOf(value);
}
} else {
var find = function(array, value) {
for(var i=0; i<array.length; i++) {
if (array[i] === value) return i;
}
return -1;
}
}
```
Этот способ - лучше всего, т.к. не требует при каждом запуске `find` проверять поддержку `indexOf`.