помогите разобраться с задачей js
*Напиши функцию makeTask(data) которая принимает один параметр data - объект со следующими свойствами.
text - текст задачи. category - категория задачи. priority - приоритет задачи. Функция должна составить и вернуть новый объект задачи, не изменяя напрямую параметр data. В новом объекте должно быть свойство completed, значение которого хранится в одноимённой локальной переменной.
В параметре data гарантированно будет только свойство text, а остальные два, category и priority, могут отсутствовать. Тогда, в новом объекте задачи, в свойствах category и priority должны быть значения по умолчанию, хранящиеся в одноимённых локальных переменных.*
тесты
*Объявлена функция makeTask(data).
Вызов makeTask({}) возвращает { category: 'Общее', priority: 'Обычный', completed: false }.
Вызов makeTask({ category: 'Домашнее', priority: 'Низкий', text: 'Вынести мусор' }) возвращает { category: 'Домашнее', priority: 'Низкий', text: 'Вынести мусор', completed: false }.
Вызов makeTask({ category: 'Финансы', text: 'Забрать проценты' }) возвращает { category: 'Финансы', priority: 'Обычный', text: 'Забрать проценты', completed: false }.
Вызов makeTask({ priority: 'Низкий', text: 'Выбрать шампунь' }) возвращает { category: 'Общее', priority: 'Низкий', text: 'Выбрать шампунь', completed: false }.
Вызов makeTask({ text: 'Купить хлеб' }) возвращает { category: 'Общее', priority: 'Обычный', text: 'Купить хлеб', completed: false }.*
вот сама функция которую мне нужно дополнить:
function makeTask(data) {
const completed = false;
const category = 'Общее';
const priority = 'Обычный';
// Пиши код ниже этой строки
// Пиши код выше этой строки
}
я пробую решить задачу таким вот образом:
let returnData = { ...data }
if (text = 'Вынести мусор') {
returnData = { category: 'Домашнее', priority: 'Низкий', text: 'Вынести мусор', completed: false }
}
if (text = 'Забрать проценты') {
returnData = { category: 'Финансы', priority: 'Обычный', text: 'Забрать проценты', completed: false }
}
return returnData;
Ответы (2 шт):
Один из вариантов (используя Spread in object literals):
function makeTask(data) {
const completed = false;
const category = 'Общее';
const priority = 'Обычный';
// Пиши код ниже этой строки
return { ...{ category, priority, completed }, ...data };
// Пиши код выше этой строки
}
console.log(makeTask({}));
// { category: 'Общее', priority: 'Обычный', completed: false }
console.log(makeTask({ category: 'Домашнее', priority: 'Низкий', text: 'Вынести мусор' }));
// { category: 'Домашнее', priority: 'Низкий', text: 'Вынести мусор', completed: false }
console.log(makeTask({ category: 'Финансы', text: 'Забрать проценты' }));
// { category: 'Финансы', priority: 'Обычный', text: 'Забрать проценты', completed: false }
console.log(makeTask({ priority: 'Низкий', text: 'Выбрать шампунь' }));
// { category: 'Общее', priority: 'Низкий', text: 'Выбрать шампунь', completed: false }
console.log(makeTask({ text: 'Купить хлеб' }));
// { category: 'Общее', priority: 'Обычный', text: 'Купить хлеб', completed: false }
Если ответы должны быть один в один как примере вашем (completed должен быть последним), то, так например.
function makeTask(data) {
// console.log('makeTask · data', data);
const completed = false;
const category = 'Общее';
const priority = 'Обычный';
// Пиши код ниже этой строки
let res = {
category,
priority,
...data,
completed,
};
console.log('makeTask · res', res);
return res;
// Пиши код выше этой строки
}
makeTask({});
//{ category: 'Общее', priority: 'Обычный', completed: false }.
makeTask({ category: 'Домашнее', priority: 'Низкий', text: 'Вынести мусор' });
//{ category: 'Домашнее', priority: 'Низкий', text: 'Вынести мусор', completed: false }.
makeTask({ category: 'Финансы', text: 'Забрать проценты' });
//{ category: 'Финансы', priority: 'Обычный', text: 'Забрать проценты', completed: false }.
makeTask({ priority: 'Низкий', text: 'Выбрать шампунь' });
//{ category: 'Общее', priority: 'Низкий', text: 'Выбрать шампунь', completed: false }.
makeTask({ text: 'Купить хлеб' });
//{ category: 'Общее', priority: 'Обычный', text: 'Купить хлеб', completed: false }.