Установите зависимости проекта:
npm install
После этого вам будут доступны следующие команды:
npm run lint
- проверка качества вашего кода утилитой ESLintnpm run test [test-file]
- запустить unit-тесты из указанного файла в консоли, например:npm run test test/spec/task-1.spec.js
npm run test:all
- запуск всех unit-тестов в консолиnpm run test -- --watch [test-file]
,npm run test:all -- --watch
- запуск одного или всех unit-тестов в консоли, с автоматическим перезапуском при изменении исходного кода. Например:npm run test -- --watch test/spec/task-1.spec.js
npm run test:browser
- запуск всех unit-тестов в браузере
Помните, каждый раз когда ваши тесты выполняются корректно, один котик становится радостным!
Дано три числа a
, b
, c
. Напишите функцию isTriangle
, которая возвращает true
, если эти числа могут быть
сторонами треугольника.
Даны два числа n
и a
. Напишите функцию getNthItem
, которая возвращает n-й член последовательности
S[0] = 0
S[i] = a - 2*S[i-1]
Дано натуральное число x
. Напишите функцию sumDigits
, которая будет подсчитывать сумму всех цифр этого числа.
Дано число секунд прошедших с полуночи.
Функция formatTime
должна сформировать строку с human-readable временем суток в 12-часовом формате (https://en.wikipedia.org/wiki/12-hour_clock).
Количество часов, минут и секунд должно записываться двузначным числом.
Например:
formatTime(3600) --> "01:00:00 AM"
formatTime(37784) --> "10:29:44 AM"
formatTime(59900) --> "04:38:20 PM"
Дана строка с текстом и число - максимально разрешенная длина текста. Если длина строки больше разрешенной, то нужно заменить конец строки на троеточие таким образом, чтобы ее длина была меньше или равна максимально разрешенной (с учетом троеточия). Если длина строки меньше или равна максимально разрешенной, то строка должна остаться неизменной.
Кроме того, ваша функция должна выбрасывать исключение типа RangeError
,
если в нее передали отрицательное или нулевое значение maxLength
.
Примечание: используйте специальный символ Unicode для троеточия: "ellipsis".
Дан массив чисел. Найти максимальное, минимальное и среднеарифметическое значение из этого массива.
Если в массиве нет значений для обработки, все результаты должны быть равны null
Например:
getStats([3, 37, 45, 80, 1, 50, 36, 75, 77, 26]) --> {
max: 80,
min: 1,
avg: 42.4
}
getStats([86, 30, 70, 19, 68, 75, 10, 49, 26, 37]) --> {
max: 86,
min: 10,
avg: 47
}
Дан массив. Нужно удалить из него все дубликаты значений, сохранив исходный порядок элементов.
Примеры:
filterUnique([10, 22, 14, 10, 28, 10, 14, 62, 32]) --> [10, 22, 14, 28, 62, 32];
filterUnique([3, 14, 15, 92, 6, 5, 35]) --> [3, 14, 15, 92, 6, 5, 35];
filterUnique([8, 2, 2, 3, 8, 2, 2, 3]) --> [8, 2, 3];
(*) Попробуйте решить задачу с помощью встроенного типа Set
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set)
и spread оператора. Результат вас удивит.
Найти символ с максимальным числом вхождений в строке. Если таких символов несколько, то можно вернуть любой из них.
Для подсчета числа вхождений каждого символа используйте тип данных Map
.
Пример:
getTopLetter("CAATGCCATA") --> "A";
Дан массив объектов. Создать новый объект, в котором будут объединяться все поля исходных объектов. Значения полей должны объединяться в массивы с перечислением значений исходных данных.
Например, пусть есть три объекта:
let package0 = {"name": "boots", "weight": 10.3, "price": 122, "fragile": false, "owner": "Michael Caine"},
package1 = {"price": 31.5, "fragile": true, "owner": "Tom Cruise", "address": "Washington DC, Ave. 144/5"},
package2 = {"price": 103.25, "charged": true, "fromCountry": "India", "volume": "10 L"},
result = mergeObjects([package0, package1, package2]);
После объединения этих объектов получится новый объект:
{
name: ["boots"],
weight: [10.3],
price: [122, 31.5, 103.25],
fragile: [false, true],
owner: ["Michael Caine", "Tom Cruise"],
address: ["Washington DC, Ave. 144/5"],
charged: [true],
fromCountry: ["India"],
volume: ["10 L"]
};
Написать алгоритм преобразования числа в формат римских цифр.