renovations
This commit is contained in:
parent
4b8b168fd2
commit
c7d4c7e3ff
172 changed files with 869 additions and 244 deletions
61
1-js/4-data-structures/7-array/7-array-find/solution.md
Normal file
61
1-js/4-data-structures/7-array/7-array-find/solution.md
Normal 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`.
|
Loading…
Add table
Add a link
Reference in a new issue