Skip to content

Commit

Permalink
update(JS): web/javascript/reference/global_objects/array/slice
Browse files Browse the repository at this point in the history
  • Loading branch information
undead404 authored and AdriandeCita committed Aug 5, 2022
1 parent 7ed9b57 commit 2bd1a41
Showing 1 changed file with 33 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,43 +9,26 @@ tags:
- String
browser-compat: javascript.builtins.String.slice
---

{{JSRef}}

Метод **`slice()`** витягає частину рядка і повертає її новим рядком, не змінюючи початковий.
Метод **`slice()`** (викраяти, вирізати скибку) витягає частину рядка і повертає її новим рядком, не змінюючи початковий.

{{EmbedInteractiveExample("pages/js/string-slice.html", "taller")}}

## Синтаксис

```js
slice(beginIndex)
slice(beginIndex, endIndex)
slice(indexStart);
slice(indexStart, indexEnd);
```

### Параметри

- `beginIndex`

- : Індекс (нумерація якого починається нулем), за яким почнеться вибирання частини рядка.

Якщо значення `beginIndex` — від'ємне, метод `slice()` почне екстракцію з позиції за індексом `str.length + beginIndex`. (Наприклад, `"test".slice(-2)` повертає `"st"`)

Якщо параметр `beginIndex` опущено, не визначено, або його неможливо перетворити на число (за допомогою {{jsxref('Number', 'Number(beginIndex)')}}), метод `slice()` почне вибирання символів з початку рядка. (Наприклад, `"test".slice()` повертає `"test"`)

Якщо параметр `beginIndex` — більший за довжину рядка `str.length` або дорівнює їй, то буде повернено порожній рядок. (Наприклад, `"test".slice(4)` повертає `""`)

- `endIndex` {{optional_inline}}

- : Індекс (нумерація якого починається нулем), _перед_ яким слід припинити вибирання рядка. Символ, який знаходиться за цим індексом, не буде включено до результату.

Якщо параметр `endIndex` опущено, не визначено, або він не може бути перетворений на число (за допомогою {{jsxref('Number', 'Number(endIndex)')}}), метод `slice()` продовжить вибирати все до кінця рядка. (Наприклад, `"test".slice(2)` повертає `"st"`)

Якщо параметр `endIndex` — більший за `str.length`, метод `slice()` також вибирає все до кінця рядка. (Наприклад, `"test".slice(2, 10)` повертає `"st"`)

Якщо `endIndex` — від'ємне число, метод `slice()` сприйматиме його як `str.length + endIndex`. (Наприклад, якщо `endIndex` дорівнює `-2`, його значення вважатиметься рівним виразові `str.length - 2`, а виклик `"test".slice(1, -2)` поверне `"e"`).

Якщо параметр `endIndex` вказує на позицію, яка знаходиться перед тією, що позначена у `startIndex`, метод `slice()` поверне `""`.
(Наприклад, як `"test".slice(2, -10)`, `"test".slice(-1, -2)` або `"test".slice(3, 2)`).
- `indexStart`
- : Індекс першого символу, що буде включений в повернений підрядок.
- `indexEnd` {{optional_inline}}
- : Індекс першого символу, котрий буде виключений з поверненого підрядка.

### Повернене значення

Expand All @@ -55,55 +38,60 @@ slice(beginIndex, endIndex)

Метод `slice()` витягає текст з початкового рядка і повертає його як новий рядок. Зміни в тексті одного рядка ніяк не впливають на інший.

Метод `slice()` витягає текст до позиції, вказаної у `endIndex`, проте не включає її. Наприклад, `str.slice(1, 4)` вибирає вміст від другого символу і до четвертого (символи з індексами `1`, `2`, і `3`).
Метод `slice()` витягає текст до позиції, вказаної у `indexEnd`, проте не включає її. Наприклад, `str.slice(1, 4)` вибирає вміст від другого символу і до четвертого (символи з індексами `1`, `2`, і `3`).

Іще один приклад: виклик `str.slice(2, -1)` витягне частину тексту, починаючи третім символом рядка, і закінчуючи другим з кінця.
- Якщо `indexStart >= str.length`, то повертається порожній рядок.
- Якщо `indexStart < 0`, то індекс рахується з кінця рядка. Більш формально висловлюючись, в цьому випадку підрядок починається від `max(indexStart + str.length, 0)`.
- Якщо `indexStart` опущено, невизначений або не може бути перетворений на число (за допомогою {{jsxref('Number', 'Number(indexStart)')}}), то він вважається еквівалентним `0`.
- Якщо `indexEnd` опущено, невизначений або не може бути перетворений на число (за допомогою {{jsxref('Number', 'Number(indexEnd)')}}), або якщо `indexEnd >= str.length`, то `slice()` вибирає символи до самого кінця рядка.
- Якщо `indexEnd < 0`, то індекс рахується від кінця рядка. Більш формально висловлюючись, в цьому випадку підрядок закінчується на `max(indexEnd + str.length, 0)`.
- Якщо після нормалізації від‘ємних значень `indexEnd <= indexStart` (наприклад, `indexEnd` вказує на символ, що стоїть перед `indexStart`), то повертається порожній рядок.

## Приклади

### Застосування `slice()` для створення нового рядка
### Застосування slice() для створення нового рядка

Наступний приклад використовує метод `slice()` для створення нового рядка.

```js
let str1 = 'Світає, край неба палає...', // довжина рядка str1 дорівнює 26.
str2 = str1.slice(1, 6),
str3 = str1.slice(5, -3),
str4 = str1.slice(8),
str5 = str1.slice(30);
console.log(str2) // ВИВІД: вітає
console.log(str3) // ВИВІД: є, край неба палає
console.log(str4) // ВИВІД: край неба палає...
console.log(str5) // ВИВІД: ""
const str1 = 'Світає, край неба палає...', // довжина рядка str1 дорівнює 26.
str2 = str1.slice(1, 6),
str3 = str1.slice(5, -3),
str4 = str1.slice(8),
str5 = str1.slice(30);
console.log(str2); // ВИВІД: вітає
console.log(str3); // ВИВІД: є, край неба палає
console.log(str4); // ВИВІД: край неба палає...
console.log(str5); // ВИВІД: ""
```

### Застосування `slice()` з від'ємними індексами
### Застосування slice() з від'ємними індексами

Наступний приклад використовує метод `slice()` з від'ємними індексами.

```js
let str = 'Світає, край неба палає...'
str.slice(-8) // повертає 'палає...'
str.slice(-8, -3) // повертає 'палає'
str.slice(0, -3) // повертає 'Світає, край неба палає'
let str = 'Світає, край неба палає...';
str.slice(-8); // повертає 'палає...'
str.slice(-8, -3); // повертає 'палає'
str.slice(0, -3); // повертає 'Світає, край неба палає'
```

Наступний приклад рахує `17` позицій у зворотному напрямі від кінця рядка, аби знайти індекс початку, і потім прямує звідти вперед на позицію `15` від початку рядка, щоб знайти індекс кінця вибірки.

```js
console.log(str.slice(-17, 15)) // => "рай не"
console.log(str.slice(-17, 15)); // => "рай не"
```

Код далі – рахує `11` позицій вперед від початку, щоб знайти індекс старту вибірки, і далі перебирає `9` позицій з кінця рядка у зворотному порядку, де і завершує вибирання.

```js
console.log(str.slice(11, -9)) // => "й неба"
console.log(str.slice(11, -9)); // => "й неба"
```

А такі аргументи змушують метод порахувати `6` позицій з кінця у зворотному напрямку для знаходження індексу початку вибірки, і іще `1` у зворотному напрямку з кінця рядка для знаходження кінцевого індексу вибірки.

```js
console.log(str.slice(-6, -1)) // => "лає.."
console.log(str.slice(-6, -1)); // => "лає.."
```

## Специфікації
Expand Down

0 comments on commit 2bd1a41

Please sign in to comment.