Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JS: Исправляет ошибки и форматирует (часть 9) #5355

Merged
merged 11 commits into from
Jun 3, 2024
79 changes: 36 additions & 43 deletions js/language-versions/index.md

Large diffs are not rendered by default.

37 changes: 21 additions & 16 deletions js/last-index-of/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: "Ищет последнее вхождение элемента в
authors:
- eshevlyakova
related:
- js/index-of/
- js/index-of
- js/array-find-index
- js/language-versions
tags:
Expand All @@ -13,9 +13,9 @@ tags:

## Кратко

Метод `lastIndexOf()` служит для поиска индекса последнего элемента. Он определён для [массивов](/js/arrays/) и [строк](/js/string/).
Метод `lastIndexOf()` нужен для поиска индекса последнего элемента. Индекс есть у элементов из [массивов](/js/arrays/) и [строк](/js/string/).

При вызове этого метода нужно передать элемент, который нужно найти в массиве или подстроку при поиске в строке. Метод вернёт индекс последнего вхождения. Если ничего не найдено, то вернётся -1.
При вызове метода передаём элемент, который ищем в массиве, или подстроку при поиске в строке. Метод вернёт индекс последнего вхождения. Если ничего не найдено, вернётся `-1`.

`lastIndexOf()` работает аналогично методу [`Array.indexOf()`](/js/index-of/), но начинает поиск с конца массива.

Expand All @@ -26,31 +26,36 @@ tags:
```js
arr.lastIndexOf(searchElement[, fromIndex])
```
- `searchElement` - элемент, который нужно найти в массиве.
- `fromIndex` (необязательный) - индекс, начиная с которого нужно начать поиск. Если не указан, поиск будет осуществляться с конца массива.

- `searchElement` — элемент, который нужно найти в массиве;
- `fromIndex` (необязательный) — индекс, начиная с которого начинается поиск. Если не указан, поиск будет осуществляться с конца массива.

## Как понять

Метод `lastIndexOf()` просматривает массив или строку справа налево. Если ничего не найдено, метод возвращает -1.
Для массива `lastIndexOf()` возвращает индекс последнего вхождения.
Для строки все то же самое, но поиск ведётся по подстрокам и возвращается индекс начала последнего вхождения подстроки.
Метод `lastIndexOf()` просматривает массив или строку справа налево. Если ничего не найдено, метод возвращает `-1`. Для массива `lastIndexOf()` возвращает индекс последнего вхождения.
TatianaFokina marked this conversation as resolved.
Show resolved Hide resolved

Для строки всё то же самое, но поиск ведётся по подстрокам и возвращается индекс начала последнего вхождения подстроки.

```js
const arr = [2, 5, 9, 2];
console.log(arr.lastIndexOf(2));
const arr = [2, 5, 9, 2]
console.log(arr.lastIndexOf(2))
// 3
console.log(arr.lastIndexOf(7));

console.log(arr.lastIndexOf(7))
// -1

console.log("раз собачка, два собачка".lastIndexOf("собачка"));
console.log('раз собачка, два собачка'.lastIndexOf('собачка'))
// 17
```

Мы также можем указать параметр `fromIndex` для начала поиска с определённого индекса:

```js
let index = "Привет, мир!".lastIndexOf("и", 5);
console.log(index); // 2
let index = 'Привет, мир!'.lastIndexOf('и', 5)
console.log(index)
// 2
```
В этом примере мы ищем символ `и` в строке `Привет, мир!`, начиная с индекса 5 (включительно). Метод `lastIndexOf()` возвращает индекс последнего вхождения символа `и`, который равен 2.
Можно считать что при передаче второго аргумента строка обрезается, для примера выше поиск будет осуществляться в строке `Привет`.

В этом примере ищем символ `и` в строке `Привет, мир!`, начиная с индекса `5` (включительно). Метод `lastIndexOf()` возвращает индекс последнего вхождения символа `и`, который равен `2`.

Можно считать, что при передаче второго аргумента строка обрезается. В примере выше поиск будет осуществляться в строке `Привет`.
30 changes: 16 additions & 14 deletions js/local-storage/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,11 @@ tags:

Это объект, хранящийся в `window`, который позволяет долговременно сохранять данные в браузере. Работает как хранилище данных в формате ключ-значение — при сохранении данных мы указываем имя поля, в которое должны быть сохранены данные, и затем используем это имя для их получения.

- Значения хранятся в виде строк. При попытке сохранения других типов данных, они будут приведены к строке. Например, если записать число, то при чтении нам вернётся число, записанное в строку.
- Не имеет ограничений по времени хранения, может быть очищен пользователем вручную или браузером при переполнении автоматически (браузеры на основе движка WebKit, например Safari, очищают `localStorage`, если к нему не обращались в течение 7 дней).
- Максимальный объем данных ограничен размером 5MB.
Значения хранятся в виде строк. При попытке сохранения других типов данных, они будут приведены к строке. Например, если записать число, то при чтении нам вернётся число, записанное в строку.

Не имеет ограничений по времени хранения, может быть очищен пользователем вручную или браузером при переполнении автоматически (браузеры на основе движка WebKit, например Safari, очищают `localStorage`, если к нему не обращались в течение 7 дней).

Максимальный объем данных ограничен размером 5MB.

## Пример

Expand Down Expand Up @@ -74,16 +76,16 @@ window.localStorage.setItem('name', 'Дока Дог')

### Чтение

За чтение отвечает `getItem('ключ')` c одним параметром, который указывает на ключ для чтения и возвращает полученное значение из хранилища. Если по этому ключу нет значения, то метод вернёт [`null`](/js/null-primitive/).
За чтение отвечает `getItem('ключ')` с одним параметром, который указывает на ключ для чтения и возвращает полученное значение из хранилища. Если по этому ключу нет значения, то метод вернёт [`null`](/js/null-primitive/).

```js
window.localStorage.getItem('name') // вернет 'Дока Дог'
window.localStorage.getItem('user') // вернет `null`
window.localStorage.getItem('name') // вернёт 'Дока Дог'
window.localStorage.getItem('user') // вернёт `null`
```

### Удаление

Удаляет запись из хранилища `removeItem('ключ')`. Он успешно выполнится даже если указанного ключа не существует в хранилище.
Удаляет запись из хранилища `removeItem('ключ')`. Он успешно выполнится, даже если указанного ключа не существует в хранилище.

```js
window.localStorage.removeItem('name')
Expand All @@ -103,7 +105,7 @@ window.localStorage.clear()
Используя свойство `length`, можно узнать, сколько всего полей было записано в хранилище.

```js
console.log(window.localStorage.length);
console.log(window.localStorage.length)
// 0
```

Expand All @@ -113,7 +115,7 @@ console.log(window.localStorage.length);

```js
window.localStorage.setItem('name', 'Дока Дог')
console.log(window.localStorage.key(0));
console.log(window.localStorage.key(0))
// 'name'
```

Expand All @@ -123,7 +125,7 @@ console.log(window.localStorage.key(0));
const localStorageSize = window.localStorage.length
for (let i = 0; i < localStorageSize; i++) {
console.log(
window.localStorage.getItem(localStorage.key(i))
window.localStorage.getItem(localStorage.key(i))
)
}
```
Expand All @@ -136,10 +138,10 @@ for (let i = 0; i < localStorageSize; i++) {

Событие содержит свойства:

- `key` - ключ, который был изменён (при вызове метода `clear()`, ключ будет `null`);
- `oldValue` - старое значение, записанное в поле;
- `newValue` - новое значение, записанное в поле;
- `url` - адрес страницы, на которой вызвано изменение.
- `key` ключ, который был изменён (при вызове метода `clear()` ключ будет `null`);
- `oldValue` старое значение, записанное в поле;
- `newValue` новое значение, записанное в поле;
- `url` адрес страницы, на которой вызвано изменение.

```js
window.addEventListener('storage', function (evt) {
Expand Down
9 changes: 5 additions & 4 deletions js/local-storage/practice/akellbl4.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
🛠 При помощи `localStorage` можно сохранять данные, относящиеся к пользователю, не храня их на сервере. В следующем примере мы будем запоминать размер шрифта на сайте и восстанавливать размер из хранилища, если он был изменён до этого.
🛠 При помощи `localStorage` можно сохранять данные, относящиеся к пользователю, не храня их на сервере. В следующем примере будем запоминать размер шрифта на сайте и восстанавливать размер из хранилища, если он был изменён до этого.

<iframe title="Сохранение пользовательских настроек — localStorage — Дока" src="../demos/user-settings/" height="530"></iframe>
<iframe title="Сохранение пользовательских настроек" src="../demos/user-settings/" height="530"></iframe>

🛠 Можно использовать для синхронизации нескольких открытых в браузере вкладок. При изменении размера шрифта в одной вкладке мы узнаем об этом во всех остальных и тоже изменим размер.

Expand All @@ -16,7 +16,7 @@ window.addEventListener('storage', function (evt) {
})
```

🛠 Иногда нам нужно сохранить не просто текст, а целую структуру данных, и в этом нам поможет [`JSON.stringify()`](/tools/json/#primer-preobrazovaniya-obekta-javascript-v-format-json).
🛠 Иногда нам нужно сохранить не просто текст, а целую структуру данных. В этом нам поможет [`JSON.stringify()`](/tools/json/#primer-preobrazovaniya-obekta-javascript-v-format-json).

```js
const user = {
Expand All @@ -37,7 +37,8 @@ function readUser() {
return undefined
}

// Если вдруг в хранилище оказался невалидный JSON предохраняемся от этого
// Если вдруг в хранилище оказался невалидный JSON,
// предохраняемся от этого
try {
return JSON.parse(userJSON)
} catch (e) {
Expand Down
Loading
Loading