Пришло время сделать работу с товарами в нашем приложении более организованной с использованием объектов.
- Активируйте строгий режим соответствия.
- Скопируйте код ниже и вставьте его в начало своей работы:
function showSpecialPrice() {
console.log('Введен секретный код. Все цены уменьшены вдвое!');
}
Наш дизайнер что-то напутал с формой заказа, и клиенты стали вводить количество в форме заказа в таком формате: 17 штук
, 1,5 килограмма
, 2.7 метра
. От этого корзина на сайте стала показывать стоимость в виде Заказ на сумму: NaN Q
, и клиенты бросают свои заказы, не закончив оформление.
Наш ведущий front-end разработчик из отпуска на Венере написал, что нужно поправить функцию fixAmount
. Сейчас она выглядит так:
function fixAmount(amount) {
return amount;
}
Функция fixAmount
должна принимать единственный аргумент:
amount
— количество штук в заказе, строка или число. Функция должна вернуть число, соответствующее пользовательскому вводу, если его оттуда можно извлечь. Либо-1
. Должны обрабатываться все варианты из примера использования функции.
const orders = [
{ price: 21, amount: 4 },
{ price: 50, amount: '17 штук' },
{ price: 7, amount: '1,5 килограмма' },
{ price: 2, amount: ' 2.7 метра ' },
{ price: 1, amount: 'семь единиц' }
];
for (let order of orders) {
let result = fixAmount(order.amount);
console.log(`Заказ на сумму: ${result * order.price} Q`);
}
Если все сделать верно, то вы получите вот такой результат:
Заказ на сумму: 84 Q
Заказ на сумму: 850 Q
Заказ на сумму: 10.5 Q
Заказ на сумму: 5.4 Q
Заказ на сумму: -1 Q
Наш инвестор просит реализовать «тайный» уровень для своих друзей. Если пользователь на сайте наберет r2d2 с клавиатуры, то все цены на сайте станут с максимальной скидкой.
Для обработки событий клавиатуры будет использована функция handleKey
, и если внутри функции станет ясно, что набран секретный код, то нужно вызвать функцию showSpecialPrice()
.
Функция handleKey
должна принимать один аргумент:
char
— символ, набранный на клавиатуре, строка. Функция должна накапливать введенные символы. И если последние введенные символы будут соответствовать кодуr2d2
в любом регистре, то функция должна вызвать функциюshowSpecialPrice
.
var keys = ['2', '4', 'R', '2', 'd', '2'];
for (let key of keys) {
handleKey(key);
}
Если всё правильно сделать, то сообщение Введен секретный код. Все цены уменьшены вдвое! будет выведено один раз.
Наш отдел снабжения постоянно получает от поставщиков «из прошлого» таблички Excel в формате CSV с данными по остаткам, партиям и закупочным ценам. Конечно же, они все это обрабатывают вручную, и поэтому толком не успевают делать ничего другого.
Давайте напишем функцию parseData
, которая будет делать из CSV-файла нормальный объект со свойствами.
Функция принимает следующие аргументы:
- Cписок имен ячеек, массив строк;
- Cписок строк файла, массив строк;
- Разделитель ячеек в строке, по умолчанию
,
, строка.
Функция должна вернуть массив объектов, преобразовав список строк в список объектов, выполнив для каждой строки следующие действия:
- Каждую строку разбить на ячейки, используя разделитель из аргументов функции;
- Создать объект;
- Заполнить его свойствами, взяв имена свойств из списка имен ячеек, которые переданы в функцию, а значения взять из ячеек, полученных разбиением строки;
- Поместить объект в результирующий массив.
const data = [
'12,Телепорт бытовой VZHIH-101 ,17,10000',
'77, Меч световой FORCE (синий луч), 2,57000'
];
let items = parseData(['id', 'name', 'amount', 'price'], data);
console.log(items);
Если все сделать верно, то вы получите вот такой результат:
[ { id: '12',
name: 'Телепорт бытовой VZHIH-101',
amount: '17',
price: '10000' },
{ id: '77',
name: 'Меч световой FORCE (синий луч)',
amount: '2',
price: '57000' } ]
Инструкция по выполнению домашнего задания:
- Зарегистрируйтесь на сайте Repl.IT.
- Перейдите в раздел my repls.
- Нажмите кнопку Start coding now!, если приступаете впервые, или New Repl, если у вас уже есть работы.
- В списке языков выберите JavaScript.
- Код пишите в левой части окна.
- Посмотреть результат выполнения файла можно, нажав на кнопку Run. Результат появится в правой части окна.
- После окончания работы нажмите кнопку Share и скопируйте ссылку из поля Share link.
- В личном кабинете на сайте netology.ru в поле комментария к домашней работе вставьте скопированную ссылку и отправьте работу на проверку.
Никаких файлов прикреплять не нужно.