Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions modules/40-define-functions/100-define-function/ru/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,31 @@ printAverage(6, 4); // => 5

Здесь `a` и `b` — входные параметры, `total` содержит их сумму, `average` получается делением суммы на 2, а `console.log()` выводит результат.

## Имена и порядок параметров

Имя параметра может быть любым — главное, чтобы оно отражало смысл значения, которое попадёт внутрь. С внешним кодом оно никак не связано:

```javascript
function getLastChar(str) {
return str[str.length - 1];
}

// Внутри функции str будет равна 'Winter is coming'.
// Имя переменной снаружи не связано с именем параметра
const text = 'Winter is coming';
console.log(getLastChar(text)); // => g
```

Когда параметров два и больше, для большинства функций становится важен порядок их передачи. Если его поменять, функция отработает по-другому:

```javascript
// Первый параметр — что ищем, второй — на что меняем
console.log('google'.replace('go', 'mo')); // => moogle

// Ничего не заменилось: внутри 'google' нет 'mo'
console.log('google'.replace('mo', 'go')); // => google
```

В JavaScript есть и другая, сокращённая форма записи функций — стрелочная. Ей посвящён отдельный урок дальше в этом модуле.

## Переиспользование и читаемость
Expand Down
29 changes: 26 additions & 3 deletions modules/40-define-functions/150-return/description.es.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,12 +120,35 @@ theory: |

instructions: |

Implementa la función `sayHurrayThreeTimes()`, que devuelve la cadena 'hurray! hurray! hurray!'.
Completa la función `truncate()`, que recorta una cadena pasada como parámetro hasta un número específico de caracteres, agrega puntos suspensivos al final y devuelve la cadena resultante. Esta lógica se utiliza a menudo en sitios web para mostrar texto largo de forma abreviada.

La función recibe dos parámetros:

1. La cadena que se debe recortar
2. El número de caracteres que se deben conservar

Aquí tienes un ejemplo de cómo debería funcionar la función que escribas:

```javascript
const hurra = sayHurrayThreeTimes();
console.log(hurray); // => hurray! hurray! hurray!
// Pasando el texto directamente
// Recortando el texto, dejando 2 caracteres
truncate('hexlet', 2); // he...

// A través de una variable
const text = 'it works!';
// Recortando el texto, dejando 4 caracteres
truncate(text, 4); // it w...
```
Debes implementar la función `truncate()` por tu cuenta, en JavaScript no existe una función así. Puedes implementar esta función de diferentes maneras, sólo te daremos una pista. Para resolverlo de esta manera, necesitarás extraer una subcadena de la cadena pasada como primer parámetro de la función. Utiliza el método [slice()](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/String/slice) para hacerlo. Piensa, según la tarea, desde qué índice y hasta qué índice debes extraer la subcadena.

```javascript
const word = 'welcome';
// Puedes pasar los parámetros al método a través de variables
const index = 3;
palabra.slice(0, indice); // wel
```

Desde el punto de vista del sistema de evaluación, no importa qué método utilices para implementar la función `truncate()` internamente, lo importante es que cumpla con la tarea planteada.

tips:
- |
Expand Down
15 changes: 12 additions & 3 deletions modules/40-define-functions/150-return/en/EXERCISE.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@

Write a function `sayHurrayThreeTimes()`, that returns a string 'hurray! hurray! hurray!'.
Write a `truncate()` function that cuts off the text you pass and adds an ellipsis at the end. This kind of logic is often used on websites to display long text in shortened form.

```javascript
const hurray = sayHurrayThreeTimes();
console.log(hurray); // => hurray! hurray! hurray!
// The first parameter is a string, the second is the number of characters to keep
truncate('hexlet', 2); // "he..."

const result = truncate("Leather bags invented the three laws of robotics, but we'll outsmart them", 48);
// "Leather bags invented the three laws of robotics..."
```

If you want to get a substring (or a character) from a string, use the [slice()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice) method:

```javascript
'welcome'.slice(2, 5); // "lco"
```
29 changes: 26 additions & 3 deletions modules/40-define-functions/150-return/es/EXERCISE.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,30 @@

Implementa la función `sayHurrayThreeTimes()`, que devuelve la cadena 'hurray! hurray! hurray!'.
Completa la función `truncate()`, que recorta una cadena pasada como parámetro hasta un número específico de caracteres, agrega puntos suspensivos al final y devuelve la cadena resultante. Esta lógica se utiliza a menudo en sitios web para mostrar texto largo de forma abreviada.

La función recibe dos parámetros:

1. La cadena que se debe recortar
2. El número de caracteres que se deben conservar

Aquí tienes un ejemplo de cómo debería funcionar la función que escribas:

```javascript
const hurra = sayHurrayThreeTimes();
console.log(hurray); // => hurray! hurray! hurray!
// Pasando el texto directamente
// Recortando el texto, dejando 2 caracteres
truncate('hexlet', 2); // he...

// A través de una variable
const text = 'it works!';
// Recortando el texto, dejando 4 caracteres
truncate(text, 4); // it w...
```
Debes implementar la función `truncate()` por tu cuenta, en JavaScript no existe una función así. Puedes implementar esta función de diferentes maneras, sólo te daremos una pista. Para resolverlo de esta manera, necesitarás extraer una subcadena de la cadena pasada como primer parámetro de la función. Utiliza el método [slice()](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/String/slice) para hacerlo. Piensa, según la tarea, desde qué índice y hasta qué índice debes extraer la subcadena.

```javascript
const word = 'welcome';
// Puedes pasar los parámetros al método a través de variables
const index = 3;
palabra.slice(0, indice); // wel
```

Desde el punto de vista del sistema de evaluación, no importa qué método utilices para implementar la función `truncate()` internamente, lo importante es que cumpla con la tarea planteada.
13 changes: 6 additions & 7 deletions modules/40-define-functions/150-return/index.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
// BEGIN
function sayHurray() {
return 'hurray! hurray! hurray!';
function truncate(text, length) {
// BEGIN
const result = `${text.slice(0, length)}...`;
return result;
// END
}
// END

console.log(sayHurray());

export default sayHurray;
export default truncate;
31 changes: 29 additions & 2 deletions modules/40-define-functions/150-return/ru/EXERCISE.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,30 @@
Напишите функцию `sayHurray()`, которая возвращает строку `'hurray! hurray! hurray!'`.

Затем выведите результат вызова функции на экран.
Допишите функцию `truncate()`, которая обрезает переданную строку до указанного количества символов, добавляет в конце многоточие и возвращает получившуюся строку. Подобная логика часто используется на сайтах, чтобы отобразить длинный текст в сокращенном виде.

Функция принимает два параметра:

1. Строка, которую нужно обрезать
2. Число символов, которые нужно оставить

Пример того, как должна работать написанная вами функция:

```javascript
// Передаём текст напрямую
// Обрезаем текст, оставляя 2 символа
truncate('hexlet', 2); // he...

// Через переменную
const text = 'it works!';
// Обрезаем текст, оставляя 4 символа
truncate(text, 4); // it w...
```
Вам нужно самостоятельно реализовать функцию `truncate()`, в JavaScript такой функции не существует. Реализовать эту функцию можно различными способами, подскажем лишь один из них. Для решения этим способом вам понадобится взять подстроку из строки, переданной первым параметром в функцию. Используйте для этого метод [slice()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice). Подумайте, исходя из задания, с какого индекса и по какой вам надо извлечь подстроку?

```javascript
const word = 'welcome';
// Передавать параметры в метод можно через переменные
const index = 3;
word.slice(0, index); // wel
```

С точки зрения проверочной системы не имеет значения, каким из способов будет реализована функция `truncate()` внутри, главное – чтобы она выполняла поставленную задачу
3 changes: 2 additions & 1 deletion modules/40-define-functions/150-return/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ import { expect, test } from 'vitest';
import f from './index.js';

test('test', () => {
expect(f()).toBe('hurray! hurray! hurray!');
expect(f('текст', 3)).toBe('тек...');
expect(f('и пошла вода', 5)).toBe('и пош...');
});

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Loading
Loading