Задачник JavaScript

Регистрация

Войти

Задачи по работе с объектами

Задание 1

У нас есть следующий объект:

const user = {
name: "John",
age: 30
};

Проверьте, что этот объект не пустой и что в нем есть ключ age.

1.


if (Object.entries(user).length !== 0 && "age" in user) {
console.log(user.age);
} else {
console.log("объект пустой");
}

2.


if (typeof user.age !== "undefined" && user.hasOwnProperty("age")) {
console.log(user.age);
} else {
console.log("объект пустой");
}

3.


if (JSON.stringify(user) == "{}") {
console.log("объект пустой");
} else {
console.log(user.age);
}

4.


проверка на пустой объект
function isEmpty(obj) {
for (let prop in obj) {
если тело цикла начнет выполняться - значит в объекте есть свойства
return false;
}
return true;
}
console.log(isEmpty(user));

5.


console.log(Object.keys(user) && "age" in user);

Задание 2

Имеется массив объектов:

const obj = [
{
name: "John",
age: 30,
},
{
name: "Bob",
age: 21,
},
{
name: "Anna",
age: 19,
},
]

Получите из этого массива объект, где name == "Bob" и сохраните это в какой-либо переменной.

1.

const aboutBob = {};
for (const user of obj) {
if (user.name === "Bob") {
Object.assign(aboutBob, user);
}
}
console.log(aboutBob)

2.

const bob = obj.find((user) => user.name === "Bob");
console.log(bob);

3.

const bob = obj.some((person) => person.name === "Bob");
console.log(bob);

4.

const bob = {};
obj.forEach((element) => {
if (element.name === "Bob") {
Object.assign(bob, element);
}
});
console.log(bobb);

Задание 3

Удалите из массива объектов (задание 2) объект с name == "Anna".

1.

const obj_2 = obj.filter((elem) => elem.name !== "Anna");
console.log(obj_2);

2.

const index = obj.findIndex((item) => item.name === "Anna");
obj.splice(index, 1);
console.log(obj);

Задание 4

Отсортируйте массив объектов в пункте 2 по свойству age в порядке возрастания.

1.

obj.sort((a, b) => a.age - b.age);
console.log(obj)

2.

Задание 5

У нас есть следующий объект:

const obj = {
id: 5,
token: 12343423
};

Получите из объекта obj значение id в константу id не используя выражение obj.id

1.

const { id: userId } = obj;
console.log(userId);

Задание 6

У нас есть следующий объект:

const student = {
name : "David Ray",
class : "VI",
age : 16 };

Получите список свойств объекта. Пример вывода : name, class, age

1.

for (let el in student){
console.log(el)
}

Задание 7

Удаление свойства rollno из объекта student.

1.

delete student.rollno;
console.log(student);

Задание 8

Получить длину объекта student.

1.

const objsize = Object.keys(student).length;
console.log(objsize)

2.

const objsize = Object.getOwnPropertyNames(student).length;
console.log(objsize)

Задание 9

Дан массив объектов

const library = [
{
title: "Bill Gates",
author: "The Road Ahead",
readingStatus: true,
},
{
title: "Steve Jobs",
author: "Walter Isaacson",
readingStatus: false,
},
{
title: "Mockingjay: The Final Book of The Hunger Games",
author: "Suzanne Collins",
readingStatus: false,
},
{
title: "Blood diamond",
author: "Эдвард Цвик",
readingStatus: true,
},
{
title: "Mandalorian",
author: "Джон Фавро",
readingStatus: true,
},
];

Написать скрипт отображения статуса чтения (то есть отображения названия книги, имени автора и статуса чтения) этих книг.
Hапример:"Hunger Games" Suzanne Collins- книгу нужно прочесть

1.


Задание 10

Дан объект

const menu = {
width: 200,
height: 300,
title: "my menu"
};

Напишите скрипт,если значение объекта является числом (number), то его значение надо увеличить вдвое..

1.


for (let elem in menu) {
if (typeof menu[elem] == "number") {
menu[elem] *= 2;
}
}
console.log(menu);

2.


Задание 11

1. Есть три объекта (три автомобиля): first_Car, second_Car и third_Car.
2. Каждый из объектов (автомобилей) имеет набор свойств и соответствующих им значений (характеристики автомобиля).
3. Рассмотрим один из объектов:

const first_Car = {
make: "VAZ", /* производитель */
model: 2106, /* модель */
year: 1980, /* год выпуска */
color: "beige", /* цвет */
passengers: 5, /* число пассажиров */
convertible: false, /* откидной верх */
mileage: 80000 /* пробег */
}

Нужно сделать следующее: Написать функцию, которая проверяет автомобиль по двум параметрам (год выпуска и пробег) и возвращает булево значение true или false.
Подробности: 1. Функция имеет один параметр car, в качестве которого получает один из 3-х объектов. Например, выше рассмотренный автомобиль first_Car.
2. Функция должна работать с любым подобным объектом.

1.


/* 1-ый объект */
const first_Car = {
make: "VAZ" /* производитель */,
model: 2106 /* модель */,
year: 1980 /* год выпуска */,
color: "beige" /* цвет */,
passengers: 5 /* число пассажиров */,
convertible: false /* откидной верх */,
mileage: 80000 /* пробег */,
};
/* 2-ой объект */
const second_Car = {
make: "VW",
model: "Passat b3",
year: 1990,
color: "neptune",
passengers: 5,
convertible: false,
mileage: 160000,
};
/* 3-ий объект */
const third_Car = {
make: "Hyundai",
model: "Solaris",
year: 2012,
color: "wet asphalt",
passengers: 5,
convertible: false,
mileage: 15000,
};

function good_Car(car) {
if (car.year < 2000) {
return false;
} else if (car.mileage > 50000) {
return false;
} else {
return true;
}
}
function itog(car) {
let result = good_Car(car);
if (result) {
console.log( "У Вас неплохой автомобиль: " + car.year + " год выпуска, с пробегом " + car.mileage + " км." );
} else {
console.log("Не будем говорить о Вашем автомобиле....");
}
}
itog(second_Car);

Задание 12

У нас есть объект, в котором хранятся зарплаты нашей команды:

let salaries = {
John: 100,
Ann: 160,
Pete: 130
}

Напишите код для суммирования всех зарплат и сохраните результат в переменной sum. Должно получиться 390.

1.


let sum = 0;
for (let key in salaries) {
sum += salaries[key];
}
console.log(sum);

Задание 13

Дан объект,описывающий прямоугольник (хранит координаты левой верхней и правой нижней точек)

const rectangle = {
startPoint: {
x: 0,
y: 0
},
endPoint: {
x: 10,
y: 15
},
}

Написать следующие функции для работы с таким объектом.
1. Функция принимает объект-прямоугольник и выводит информацию о нем (где какая точка расположена).
2. Функция принимает объект-прямоугольник и возвращает его ширину.
3. Функция принимает объект-прямоугольник и возвращает его высоту.
4. Функция принимает объект-прямоугольник и возвращает его площадь.
5. Функция принимает объект-прямоугольник и возвращает его периметр.
6. Функция изменения ширины прямоугольника. Она прини- мает объект-прямоугольник и на сколько единиц изменить ширину.
7. Функция изменения высоты прямоугольника. Она прини- мает объект-прямоугольник и на сколько единиц изменить высоту.
8. Функция изменения ширины и высоты прямоугольника. Она принимает объект-прямоугольник и два значения – для изменения ширины и высоты.
9.Функция смещения прямоугольника по оси X. Она при- нимает объект-прямоугольник и на сколько единиц его сдвинуть.
10.Функция смещения прямоугольника по оси Y. Она при- нимает объект-прямоугольник и на сколько единиц его сдвинуть.
11.Функция смещения прямоугольника и по оси X и по оси Y. Она принимает объект-прямоугольник и два значе- ния: сдвиг по оси X и сдвиг по оси Y.
12.Функция для проверки, находится ли точка внутри пря- моугольника. Она принимает объект-прямоугольник и координаты точки.

1.
function getRectPoints() {
console.log("startPoint (",rectangle.startPoint.x,",", rectangle.startPoint.y,")");
console.log("endPoint (",rectangle.endPoint.x, ",", rectangle.endPoint.y,")");
}
getRectPoints();
2.
function getRectWide() {
return rectangle.endPoint.x - rectangle.startPoint.x;
}
let width = getRectWide();
console.log("width", width);
3.
function getRectHeight() {
return rectangle.endPoint.y - rectangle.startPoint.y;
}
let height = getRectHeight();
console.log("height", height);
4.
function getRectArea() {
return getRectWide() * getRectHeight();
}
let area = getRectArea()
console.log('area', area)
5.
function getRectPerim() {
return (getRectWide() + getRectHeight()) * 2;
}
let perimetr = getRectPerim()
console.log('perimetr', perimetr)

Задание 14

Сажаем Фидо на диету....

Дан обьект с описанием собаки по кличке Фидо

const fido = {
name: "Fido",
weight: 48,
breed: "Mixed",
loves: "walks",
};

Предположим,мы тестируем новый метод по снижению веса собак.Напишите функцию LoseWeight чтобы пользователь вводил обьект и вес,который нужно сбросить.А собака по волшебству,похудеет.

1.


function LoseWeight(dog, amout) {
dog.weight = dog.weight - amout;
}
LoseWeight(fido, 20);
console.log(`${fido.name} + "now weight" + ${fido.weight}`);

Задание 15

Вам вручили сверхсекретный материал....

Дан объект

const superSecretFile = {
level: "classified",
opened: 0,
password: 2,
};

Напишите две функции. Первая функция, getSecret, возвращает содержимое файла, если пароль указан правильно, и регистрирует все попытки обращения к файлу. Вторая функция, setSecret, обновляет содержимое файла и обнуляет счетчик обращений.

1.


const superSecretFile = {
level: "classified",
opened: 0,
password: 2,
contents: " Dr. Evel's next meeting is in Detroit",
};
function getSecret(file, secretPassword) {
file.opened = file.opened + 1;
if (secretPassword == file.password) {
return file.contents;
} else {
return "Invalid password! No secret for you.";
}
}
function setSecret(file, secretPassword, secret) {
if (secretPassword == file.password) {
file.opened = 0;
file.contents = secret;
}
}
let secret = getSecret(superSecretFile, 2);
console.log(secret);
setSecret(superSecretFile, 2, "Dr. Evel's next meeting is in Philadelphia.");
secret = getSecret(superSecretFile, 2);
console.log(secret);

Задание 16

Создайте объект list, задайте для него: свойство values, содержащее массив похожих значений, например, ка- ких-либо продуктов

const list={}
Метод printList(), который сортирует все элементы массива values в алфавитном порядке и выводит их в виде нумерованного списка в тело документа методом document.write(), метод add(product), который добавля- ет к values еще один элемент.
Выведите сначала массив начальных значений объ- екта list с помощью его метода printList(). Например, это будет список продуктов:

1.apple
2.ice cream
3.kivi
4.potato
5.sour creame
6.tomato


Затем добавьте еще один какой-нибудь элемент с по- мощью метода add() и снова выведите все значений объ- екта list методом printList().

1.apple
2.ice cream
3.kivi
4.potato
5.sour creame
6.tomato
7.pumpkin


Затем замените все значения в свойстве list.values на другой массив и снова выведите его методом printList(). Например, так:

1.Java Script
2.C#
3.HTML
4.PHP


1.


const list = {
values: ["tomato", "kivi", "potato", "sour creame", "apple", "ice cream"],
printList: function () {
this.values.sort();
for (let index = 0; index < this.values.length; index++) { const element=this.values[index];
console.log(`ul ol ${element} ol ul`);
}
},
addProduct: function () {
this.values.push("pumkin");
},
};
list.printList();
list.addProduct();
list.printList();
console.log(list.values);
list.values = ["Java script", "C#", "HTML", "PHP"];
console.log(list.values)

Задание 17

Найди ошибку

Ниже приведен код

const song = {
name: "Walk This Way",
artist: "Run-D.M.C.",
minutes: 4,
seconds: 3,
genre: "80s",
playing: false,
play: function() {
if (!playing) {
this = true;
console.log("Playing " + name + " by " + artist);
}
}
};
pause: function() {
if (playing) {
this.playing = false;
}
}
this.play();
this.pause();

Найдите ошибки в коде

1.


const song = {
name: "Walk This Way",
artist: "Run-D.M.C.",
minutes: 4,
seconds: 3,
genre: "80s",
playing: false,
play: function() {
if (!this.playing) {
this.playing = true;
console.log("Playing"+ this.name + " by " + this.artist);
}
},
pause: function() {
if (this.playing) {
this.playing = false;
}
}
}
this song.play();
this song.pause();

Задание 18

1.


Задачи по работе с строками

Задание 1

Написать функцию, которая принимает 2 строки и сравнивает их длину.

Функция возвращает 1, если в первой строке больше символов, чем во второй
-1 – если во второй больше символов, чем в первой
или 0 – если строки одинаковой длины

1.

function string(str1, str2) {
if (str1.length > str2.length) {
return 1;
} else if (str2.length > str1.length) {
return -1;
}
return 0;
}
console.log(string("more", "butterfly"));

Задание 2

Написать функцию, которая переводит в верхний регистр первый символ переданной строки.

1.

function upString(str) {
if (!str) return str;
return str[0].toUpperCase() + str.slice(1);
}
console.log(upString("dracula"));

Задание 3

Написать функцию, которая считает количество гласных букв в переданной строке.

1.

function countVowel(str) {
return str.match(/[aeiou]/gi).length;
}
console.log(countVowel("Some love one"))

Задание 4

Написать функцию для проверки спама в переданной строке. Функция возвращает true, если строка содержит спам. Спамом считать следующие слова: 100% бесплатно, увеличение продаж, только сегодня, не удаляйте, ххх. Функция должна быть нечувствительна к регистру.

1.

function checkSpam(str) {
let lowstr = str.toLowerCase();
return (
lowstr.indexOf("100% бесплатно") != -1 ||
lowstr.indexOf("xxx") != -1 ||
lowstr.indexOf("увеличение продаж") != -1 ||
lowstr.indexOf("только сегодня") != -1 ||
lowstr.indexOf("не удаляйте") != -1
);
}
console.log(checkSpam("привет"));
console.log(checkSpam("Xxx"));
console.log(checkSpam("Не уДаЛяйте"));

2.

function checkSpam(str) {
let lowstr = str.toLowerCase();
return (
lowstr.includes("100% бесплатно") ||
lowstr.includes("xxx") ||
lowstr.includes("увеличение продаж") ||
lowstr.includes("только сегодня") ||
lowstr.includes("не удаляйте")
);
}
console.log(checkSpam("привет"));
console.log(checkSpam("XxX"));
console.log(checkSpam("Не уДаЛяйте"));

Задание 5

Написать функцию сокращения строки. Функция принимает строку и ее максимальную длину. Если длина строки больше, чем максимальная, то необходимо отбросить лишние символы, добавив вместо них троеточие. Например: truncate(“Hello, world!”, 8) должна вернуть “Hello...”

1.

function truncateString(str, num) {
if (str.length > num) {
return str.slice(0, num-3) + "...";
} else {
return str;
}
}
console.log(truncateString("Hello,world!", 8));

Задание 6

Написать функцию, которая проверяет, является ли переданная строка палиндромом.

1.

function palindrome(str) {
return str.split('').reverse().join('') == str;
}
console.log(palindrome("anna"));
console.log(palindrome("annA"));
console.log(palindrome("123321"));
console.log(palindrome("art123art"));

2.

function palindrome(str) {
let check = "";
for (let i = str.length - 1; i >= 0; --i) {
check += str[i];
}
return str == check;
}
console.log(palindrome("34543"));
console.log(palindrome("345543"));
console.log(palindrome("3"));
console.log(palindrome(""));
console.log(palindrome("723210"));

Задание 7

Написать функцию, которая считает количество слов в предложении.

1.

function txt(str) {
return str.split(" ").length
}
console.log(txt("Каждый охотник желает знать"));

Задание 8

Написать функцию, которая возвращает самое длинное cлово из предложения.

1.

function txt_2(str) {
str = str.split(" ");
let longeStr = "";
for (let index = 0; index < str.length; index++) {
const element = str[index];
console.log(element.length);
if (element.length > longeStr.length) {
longeStr = element;
}
}
return longeStr;
}
console.log(txt_2("May the force be with!"));
console.log(txt_2("The quick brown fox jumps over the lazy dog"));

Задание 9

Написать функцию, которая считает среднюю длину слова в предложении.

1.

function text_3(str) {
str = str.split(" ");
console.log(str.length);
let midleStr = 0;
let sumStr = 0;
for (let index = 0; index < str.length; index++) {
const element = str[index];
console.log(element);
sumStr = sumStr + element.length;
}
midleStr = sumStr / str.length;
console.log(midleStr);
return midleStr;
}
console.log(text_3("Каждый охотник желает знать"));

Задание 10

Написать функцию, которая принимает строку и символ и выводит индексы, по которым находится этот символ в строке. Также вывести, сколько всего раз встречается этот символ в строке.

1.

function strSymb(str: string, symb) {
let inStr = "";
let index = 0
while (true) {
index = str.indexOf(symb, index)
if (index != -1) {
inStr += index + ', '
index++
} else {
if (inStr) inStr = inStr.slice(0, inStr.length - 2)
return inStr
}
}
}
console.log(strSymb("Hello friendl!", "l"));

Задание 11

Допишите функцию...

function stringToarray(str) {
Ваш код
};

Напишите функцию stringToarray(str), которая преобразует строку в массив слов.

1.

function stringToarray(str) {
return str.trim().split(" ");
}
console.log(stringToarray("Каждый охотник желает знать"));

Задание 12

Допишите функцию...

function delete_characters(str, length) {
Ваш код
};

Напишите функцию delete_characters(str, length), которая возвращает подстроку, состоящую из указанного количества символов.

1.

function delete_characters(str, length) {
return str.substr(0, length);
}
console.log(delete_characters("Каждый охотник желает знать", 7));

Задание 13

Допишите функцию...

function insert_dash(str) {
Ваш код
}

Напишите функцию insert_dash(str), которая принимает строку str в качестве аргумента и вставляет тире (-) между словами. При этом все символы строки необходимо перевести в верхний регистр.

1.

function insert_dash(str) {
return str.toUpperCase().replace(/\s/g, '-');
}
console.log(insert_dash("Каждый охотник желает знать"));

2.

function insert_dash_2(str) {
return str.toUpperCase().split(' ').join('-');
}
console.log(insert_dash_2("Каждый охотник желает знать"));

Задание 14

Допишите функцию...

function capitalize(str) {
Ваш код
}

Напишите функцию capitalize(str), которая возвращает строку, в которой каждое слово начинается с заглавной буквы.

1.

function capitalize(str) {
let str2 = "";
for (let index of str.split(" ")) {
str2 = str2 + String(index.replace(index[0], index[0].toUpperCase())) + " ";
}
return str2;
}
console.log(capitalize("Каждый охотник желает знать"));

2.

function capitalize(str) {
const arr = str.split(" ");
const newArr = [];
arr.forEach((item) => {
const word = item[0].toUpperCase() + item.slice(1);
newArr.push(word);
});
const newString = newArr.join(" ");
return newString;
}
console.log(capitalize("Каждый охотник желает знать"));

Задание 15

Допишите функцию...

function change_register(str) {
Ваш код
}

Напишите функцию change_register(str), которая принимает в качестве аргумента строку и и заменяет регистр каждого символа на противоположный. Например, если вводится «КаЖдЫй ОхОтНиК», то на выходе должно быть «кАжДыЙ оХоТнИк».

1.

function change_register(str) {
let new_str = "";
for (let index = 0; index < str.length; index++) {
const element=str[index];
if (element==element.toUpperCase()) {
new_str=new_str + element.toLowerCase(); }
else { new_str=new_str + element.toUpperCase();
}
}
return new_str; }
console.log(change_register("кАжДыЙ оХоТнИк ЖеЛаЕт ЗнАтЬ"));

2.

function change_register_2(str) {
let new_str = "";
for (let elem of str) {
new_str = new_str + elem === elem.toUpperCase() ? elem.toLowerCase() : elem.toUpperCase();
}
return new_str;
}
console.log(change_register("КАЖДЫЙ оХоТнИк ЖеЛаЕт ЗнАтЬ"));

Задание 16

Допишите функцию...

function remove_char(str) {
...ваш код...
};

Напишите функцию remove_char(str), которая возвращает строку, очищенную от всех не буквенно-цифровых символов.

1.

function remove_char(str) {
let new_str = "";
new_str = str.replace(/[^\w\s]|_/g, "").replace(/\s+/g, " ");
return new_str;
}
console.log(remove_char("every hunter wishes to know"));

Задание 17

Допишите функцию...

function zeros (num, len, sign) {
...ваш код...
};

Напишите функцию zeros(num, len, sign), которая дополняет нулями до указаной длины числовое значение с дополнительным знаком «+» или « -« в зависимости от передаваемого аргумента.

1.

function zeros(num, len, sign) {
let len_zer = len - (num + "").length, к-во нулей
num_zer = "";
for (; len_zer > 0; len_zer--) {
num_zer += 0;
}
return sign === undefined || sign === "" ? num_zer + num + "" : sign + num_zer + num + "";
}
console.log(zeros(145, 5, "-")); -00145
console.log(zeros(33, 4, "+")); +0033
console.log(zeros(33, 4)); 0033

Задание 18

Допишите функцию...

function comparison(str1, str2) {
ваш код
}
console.log(comparison("string", "StRiNg")); true
console.log(comparison("ABCDe", "AbcdW")); false

Напишите функцию comparison(str1, str2), которая сравнивает строки без учёта регистра символов.

1.

function comparison(str1, str2) {
const new_str = str1.toUpperCase() === str2.toUpperCase();
return new_str;
}
console.log(comparison("string", "StRiNg")); true
console.log(comparison("ABCDe", "AbcdW")); false

Задание 19

Допишите функцию...

function insensitive_search(str1, str2) {
ваш код
}
console.log(insensitive_search("Изучаю JavaScript", "javascript")); Соответствует
console.log(insensitive_search("Изучаю JavaScript", "javascriptS")); Не соответствует

Напишите функцию insensitive_search(str1, str2), которая осуществляет поиск подстроки str2 в строке str1 без учёта регистра символов.

1.

function insensitive_search(str1, str2) {
let search_str = new RegExp(str2, "ig");
let result = str1.search(search_str);
return result > 0 ? "Соответствует" : "Не соответствует";
}
console.log(insensitive_search("Изучаю JavaScript", "javascript")); Соответствует
console.log(insensitive_search("Изучаю JavaScript", "javascriptS")); Не соответствует

Задание 20

Допишите функцию...

function initCap(str) {
ваш код
}
console.log(initCap("hEllo woRld")); HelloWorld

Напишите функцию initCap(str), которая преобразует стиль написания составных слов строки в CamelCase, при котором несколько слов пишутся слитно без пробелов, при этом каждое слово внутри строки пишется с заглавной буквы.

1.

function initCap(str) {
return str.toLowerCase().replace(/(?:^|\s)[a-z]/g, function (m) {
return m.toUpperCase().replace(/\s+/g, "");
});
}
console.log(initCap("hEllo woRld")); HelloWorld

2.

function initCap_2(str) {
return str .trim() .split(" ") .map((s) => s.charAt(0).toUpperCase() + s.slice(1).toLowerCase()) .join("");
}
console.log(initCap_2("hEllo woRld")); HelloWorld

3.

function initCap_3(str) {
let str2 = "";
for (let s of str.split(" ")) {
str2 = str2 + s.charAt(0).toUpperCase() + s.slice(1).toLowerCase();
}
return str2;
}
console.log(initCap_3("hEllo woRld")); HelloWorld

Задание 21

Допишите функцию...

function initSnake(str) {
ваш код...
}
console.log(initSnake("HelloWorld")); hello_world

Напишите функцию initSnake(str), которая преобразует стиль написания составных слов строки из CamelCase в snake_case, при котором несколько слов разделяются символом подчеркивания (_), причём каждое слово пишется с маленькой буквы.

1.

function initSnake(str) {
Заменяем все заглавные буквы символом подчеркивания (_), а затем строчными буквами
let new_str= str.replace(/[A-Z]/g, function (letter) {
return '_' + letter.toLowerCase();
});
Удаляем символ подчеркивания (_) в начале строки
return new_str.replace(/^_/, "");
}
console.log(initSnake("HelloWorld")); hello_world

Задание 22

Допишите функцию...

function statStr(str) {
ваш код...
}
console.log(statStr(myStr));

Написать функцию, которая принимает строку и выводит статистику о ней: количество букв, количество цифр и количество других знаков.

1.

const myStr = " dfgdfg 3453534 ';'.x';arrSortPlace[qdlpk/xz>sdl'q;]";
function statStr(str) {
str = str.toLowerCase();
console.log(str.length);
let res = { letter: 0, number: 0, symbol: 0 };
for (let symbol of str) {
if (symbol >= "a" && symbol <= "z" ) {
++res.letter;
} else if (symbol >= "0" && symbol <= "9" ) {
++res.number;
} else {
++res.symbol;
}
}
return res;
}
console.log(statStr(myStr));

Задание 23

Допишите функцию...

Написать функцию, которая преобразует названия css- стилей с дефисом в название в СamelСase стиле: font-size в fontSize, background-color в backgroundColor, text- align в textAlign.

1.

function toCamelCase(str:string) {
const arr = str.split('-')
return arr.reduce((acc, el, i) => acc+= i==0 ? el : el[0].toUpperCase()+el.slice(1))
}
console.log(toCamelCase('background-color'))

Задание 24

Допишите функцию...

Написать функцию вывода текста по заданному шаблону. Функция принимает первым параметром шаблон, в тексте которого может использоваться %, после символа % ука- зывается индекс входного параметра. При выводе вместо %индекс необходимо вывести значение соответствующего входного параметра. Например: print(“Today is %1 %2.%3.%4”, “Monday”, 10, 8, 2020) должна вывести “Today is Monday 10.8.2020”.

1.

function print(tempalte: string, ...args: any[]) {
let str = "";
for (let i = 0; i < tempalte.length; i++) {
if (tempalte[i] != "%") {
str += tempalte[i];
} else {
if (!Number.isNaN(+tempalte[i + 1])) {
str += arguments[tempalte[i + 1]];
} else {
str += tempalte[i];
str += tempalte[i + 1];
}
i++;
}
}
return str;
}
console.log( print("Today is %1 %2.%3.%4 %5", "Monday", 10, 8, 2020, "!!!!()!!!!") );

Задачи по работе с массивами

Задание 1

Дан массив...

const arr = [1, 3, 4, 5, 6, 7, 8, 91, 2, 3]

Функция принимает массив и выводит его на экран.

1.

function showArr(myArr) {
document.write(myArr);
}
showArr(arr);

Задание 2

Дан массив...

const arr = [1, 3, 4, 5, 6, 7, 8, 91, 2, 3]

Функция принимает массив и выводит только четные элементы.

1.


function evenArr(myArr) {
const myNewArr = [];
for (let index = 0; index < myArr.length; index++) {
const element = myArr[index];
if (element % 2 == 0) myNewArr.push(element);
return myNewArr;
}
}
console.log(evenArr(arr));

2.

function evenArr_2(myArr) {
const newArr = [];
for (i in myArr) {
let elem = myArr[i];
if (elem % 2 == 0) newArr.push(elem);
}
return newArr;
}
console.log(evenArr_2(arr));

Задание 3

Дан массив...

const arr = [1, 3, 4, 5, 6, 7, 8, 91, 2, 3]

Функция принимает массив и возвращает сумму всех элементов массива.

1.


function sumArr(myArr) {
let sum = 0;
for (i in myArr) {
let elem = myArr[i];
sum = sum + elem;
}
return sum;
}
console.log(sumArr(arr));

Задание 4

Дан массив...

const arr = [1, 3, 4, 5, 6, 7, 8, 91, 2, 3]

Функция принимает массив и возвращает его максимальный элемент.

1.


function maxElem(myArr) {
let max = 0;
for (let index = 0; index < myArr.length; index++) {
const element = myArr[index];
if (element > max) {
max = element;
}
}
return max;
}
console.log(maxElem(arr));

2.

function maxElem_2(myArr) {
return Math.max(...myArr);
}
console.log(maxElem_2(arr));

3.

function arrayMax(myArr) {
const len = myArr.length;
const max = -Infinity;
while (len--) {
if (myArr[len] > max) {
max = myArr[len];
}
}
return max;
}
console.log(arrayMax(arr));

Задание 5

Дан массив...

const arr = [1, 3, 4, 5, 6, 7, 8, 91, 2, 3]

Функция добавления нового элемента в массив по указанному индексу.

1.

function addElem(myArr, indexElem, elem) {
if (indexElem > myArr.length || indexElem < 0) return "Bad index" ;
myArr.splice(indexElem, 0, elem);
return myArr;
}
console.log(addElem(arr, 1, 2));
console.log(addElem(arr, 8, 88));

Задание 6

Дан массив...

const arr = [1, 3, 4, 5, 6, 7, 8, 91, 2, 3]

Функция удаления элемента из массива по указанному индексу.

1.


function deleteElem(index) {
arr_2.splice(index, 1);
}
deleteElem(1);
console.log(arr);

Задание 7

Даны два массива....

const myArr = [888, 9999, 3, 78, 91]
const arr = [1, 3, 4, 5, 6, 7, 8, 91, 2, 3]

Функция принимает 2 массива и возвращает новый массив, в котором собраны все элементы из двух массивов без повторений.

1.

function newArr(arr_1, arr_2) {
let arr_3 = arr_1.concat(arr_2);
let unique = Array.from(new Set(arr_3));
return unique;
}
console.log(newArr(myArr, arr));

Задание 8

Даны два массива....

const myArr = [888, 9999, 3, 78, 91]
const arr = [1, 3, 4, 5, 6, 7, 8, 91, 2, 3]

Функция принимает 2 массива и возвращает новый массив, в котором собраны общие элементы (то есть элементы, которые встречаются и в первом и во втором массивах) без повторений.

1.

function newArr_2(arr_1, arr_2) {
let intersection = arr_1.filter((num) => arr_2.includes(num));
return intersection;
}
console.log(newArr_2(myArr, arr));

Задание 9

Даны два массива....

const myArr = [888, 9999, 3, 78, 91]
const arr = [1, 3, 4, 5, 6, 7, 8, 91, 2, 3]

Функция принимает 2 массива и возвращает новый массив, в котором собраны все элементы из первого массива, которых нет во втором массиве.

1.


function newArr_3(arr_1, arr_2) {
let difference = arr_1.filter((num) => !arr_2.includes(num));
return difference;
}
console.log(newArr_3(myArr, arr));

Задание 10

Создать массив фруктов.

let fruits = ["apple", "pinia", "potato", "orange", "melon", "tomato"];

1.Отсортировать его по алфавиту
2.Вывод на экран с помощью document.write() в виде списка (с помощью тегов ul и li).
3.Поиск фрукта в массиве. Функция принимает название фрукта и возвращает индекс найденного элемента или -1, если не найден. Поиск должен быть нерегистрозависимым.

1.

Задание 11

Создать массив «Список покупок». Каждый элемент массива является объектом, который содержит название продукта, необходимое количество и куплен или нет. Написать несколько функций для работы с таким массивом.

const purchase = [
{
name: "a",
count: 12,
purchased: true,
},
{
name: "b",
count: 6,
purchased: false,
},
{
name: "c",
count: 1,
purchased: true,
},
];

1.Вывод всего списка на экран таким образом, чтобы сначала шли некупленные продукты, а потом – купленные.
2.Добавление покупки в список. Учтите, что при добавлении покупки с уже существующим в списке продуктом, необ- ходимо увеличивать количество в существующей покупке, а не добавлять новую.
3.Покупка продукта. Функция принимает название продукта и отмечает его как купленный.

1.

const addPurchaseButton = document.querySelector(".addPurchase");
const setPurchasedButton = document.querySelector(".setPurchased");
function whatToBuy(arr) {
let n = 1;
for (let el of arr) {
if (!el.purchased) {
console.log(`${n}. ${el.name} Надо купить ${el.count} штук`);
n++;
console.log(n + ". " +el.name+" Надо купить "+el.cont+"штук")
}
}
for (let el of arr) {
if (el.purchased) {
console.log(`${n}. ${el.name} Куплено ${el.count} штук`);
n++;
console.log(n + ". " +el.name+" Надо купить "+el.cont+"штук")
}
}
}
function addPurchase() {
const name = prompt("Введите название") as string;
const count = +(prompt("Введите количество") as string);
let find = false;
for (let el of purchase) {
if (el.name == name) {
el.count += count;
find = true;
}
}
if (!find) {
purchase.push({ name: name, count, purchased: false });
}
whatToBuy(purchase);
}
function setPurchased() {
const name = prompt("Введите название купленного товара") as string;
for (let el of purchase) {
if (el.name == name) {
el.purchased = true;
}
}
whatToBuy(purchase);
}
addPurchaseButton?.addEventListener("click", addPurchase);
setPurchasedButton?.addEventListener("click", setPurchased);
whatToBuy(purchase);

Задание 12

Создать массив css-стилей (цвет, размер шрифта, выравнива- ние, подчеркивание и т. д.). Каждый элемент массива – это объект, состоящий из двух свойств: название стиля и значение стиля.

Написать функцию, которая принимает массив стилей и текст, и выводит этот текст с помощью document.write() в тегах "p", добавив в открывающий тег атрибут style со всеми стилями, перечисленными в массиве.

1.

const colorRed = [
{
name: "color",
value: "red",
},
{
name: "text-decoration",
value: "underline",
},
];
const colorGreen = [
{
name: "color",
value: "green",
},
{
name: "font-size",
value: "20px",
},
];
const printTextDiv = document.querySelector(".printText");
function printText(styleArr, text) {
let styleStr = "";
for (let el of styleArr) {
styleStr += `${el.name}:${el.value}`;
}
if (printTextDiv) {
printTextDiv.innerHTML += `p style="${styleStr}">${text} p`;
}
}
printText(colorRed, "every hunter wishes to know");
printText(colorGreen, "every hunter wishes to know");

Задание 13

Написать функцию, которая принимает двузначное число и возвращает его в текстовом виде. Например: 35 – тридцать пять, 89 – восемьдесят девять, 12 – двенадцать.

1.

function oneNumber(n: number) {
switch (n) {
case 0:
return "ноль";
case 1:
return "один";
case 2:
return "два";
case 3:
return "три";
case 4:
return "четыре";
case 5:
return "пять";
case 6:
return "шесть";
case 7:
return "семь";
case 8:
return "восемь";
case 9:
return "девять";
}
}
function secondOfTen(n: number) {
switch (n) {
case 0:
return "десять";
case 1:
return "одиннадцать";
case 2:
return "двенадцать";
case 3:
return "тринадцать"; case 4:
return "четырнадцать"; case 5:
return "пятьнадцать";
case 6:
return "шестьнадцать";
case 7:
return "семьнадцать";
case 8:
return "восемьнадцать";
case 9:
return "девятьнадцать";
}
}
function firstOfMoreTen(n: number) {
switch (n) {
case 2:
return "двадцать";
case 3:
return "тридцать";
case 4:
return "сорок";
case 5:
return "пятьдесят";
case 6:
return "шестьдесят";
case 7:
return "семьдесят";
case 8:
return "восемьдесят";
case 9:
return "девяносто";
}
}
function numberToText(n: number) {
if (n < -99 || n> 99) return "Неверное число";
let minusStr = "";
let sN = "";
const numberWithMinus = n.toString();
if (numberWithMinus[0] == "-") {
minusStr = "минус ";
sN = numberWithMinus.slice(1);
} else {
sN = n.toString();
}
if (sN.length == 1) {
return minusStr + oneNumber(+sN[0]);
}
if (sN.length == 2) {
if (sN[0] == "1") {
return minusStr + secondOfTen(+sN[1]);
}
if (sN[1] == "0") {
return minusStr + firstOfMoreTen(+sN[0]);
}
return minusStr + firstOfMoreTen(+sN[0]) + " " + oneNumber(+sN[1]);
}
}
alert(numberToText(+(prompt("введите двузначное число") as string)));
console.log(numberToText(18));
console.log(numberToText(0));
console.log(numberToText(9));
console.log(numberToText(34));
console.log(numberToText(68));

Задание 14

Создать массив, описывающий чек в магазине. Каждый эле- мент массива состоит из названия товара, количества и цены за единицу товара.

Написать следующие функции.
1. Распечатка чека на экран.
2. Подсчет общей суммы покупки.
3. Получение самой дорогой покупки в чеке.
4. Подсчет средней стоимости одного товара в чеке.

1.

const cheque = [
{
name: "a",
count: 1,
price: 10,
},
{
name: "b",
count: 2,
price: 20,
},
{
name: "c",
count: 3,
price: 30,
},
{
name: "d",
count: 1,
price: 40,
},
{
name: "r",
count: 3,
price: 50,
},
{
name: "f",
count: 2,
price: 60,
},
];

Задание 15

Создать массив аудиторий академии. Объект-аудитория со- стоит из названия, количества посадочных мест (от 10 до 20) и названия факультета, для которого она предназначена.

Написать следующие функции.
1.Вывод на экран всех аудиторий.
2.Вывод на экран аудиторий для указанного факультета.
3.Вывод на экран только тех аудиторий, которые подходят для переданной группы. Объект-группа состоит из названия, количества студентов и названия факультета.
4.Функция сортировки аудиторий по количеству мест.
5.Функция сортировки аудиторий по названию (по алфа- виту).

1.

const academy = [
{
name: "22",
places: "15",
faculty: "web-developer",
},
{
name: "23",
places: "12",
faculty: "web-designer",
},
{
name: "29",
places: "5",
faculty: "web-designer",
},
{
name: "10",
places: "11",
faculty: "web-designer",
},
{
name: "20",
places: "15",
faculty: "Languages",
},
{
name: "26",
places: "14",
faculty: "Languages",
},
{
name: "33",
places: "18",
faculty: "Languages",
},
]

вывод на экран всех аудиторий

function showAcademy(classRoom) {
for (let index = 0; index < classRoom.length; index++) { const element=classRoom[index]; console.log( `li группа: ${element.name}, факультет: ${element.faculty}, количество мест: ${element.places} li` );
}
}
showAcademy(academy);

Вывод на экран аудиторий для указанного факультета.

function showFacultyRooms(arr , faculty) {
let facultyRooms = [];
for (const elem of arr) {
if (elem.faculty.toLowerCase() === faculty.toLowerCase()) {
facultyRooms.push(elem.name);
}
}
return `Факультет "${faculty}" группа: ${facultyRooms}.`;
}
console.log(showFacultyRooms(academy, "lanGuages"));
console.log(showFacultyRooms(academy, "web-Designer"));

Вывод на экран только тех аудиторий, которые подходят для переданной группы. Объект-группа состоит из названия, количества студентов и названия факультета.

const group = {
name: "sdfsd",
count: 6,
faculty: "web-designer",
};
function showAuditory(arr: , group:) {
let auditories = [] ;
for (let elem of arr) {
if (
elem.places >= group.count &&
elem.faculty.toLowerCase() === group.faculty.toLowerCase()
) {
auditories.push(elem);
}
}
return auditories;
}
console.log("auditories", showAuditory(academy, group));

Функция сортировки аудиторий по количеству мест.

function arrSortPlace(audit) {
audit.sort((a, b) => a.places - b.places);
return audit;
}
console.log(arrSortPlace(academy));

Функция сортировки аудиторий по названию (по алфавиту)

function arrSortName(audit) {
audit.sort((a, b) => a.faculty - b.faculty);
return audit;
}
console.log(arrSortName(academy));

Задачи по работе с циклами

Задание 1

Есть объект users в которм перечислен возраст участников.

Lorem ipsum dolor sit, amet consectetur adipisicing elit. Reiciendis minima blanditiis ea. Praesentium eum voluptatem quae magnam, doloribus sequi eligendi.
const users = {
"John": 28,
"Mark": 30,
"David": 25,
"Richard": 42
};
/* ...ваш код... */

Напишите код, который выведет суммарный возраст всех участников. Решите задачу через цикл for...in.

1.


const users = {
John: 28,
Mark: 30,
David: 25,
Richard: 42,
};
let sum = 0;
for (let us in users) {
sum += users[us];
}
console.log(sum);

Задачи по работе с классами

Задание 1

1.


const users = {
John: 28,
Mark: 30,
David: 25,
Richard: 42,
};
let sum = 0;
for (let us in users) {
sum += users[us];
}
console.log(sum);

Lorem ipsum dolor sit amet consectetur adipisicing elit. Provident, quia.