помогите разобраться с задачей 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 шт):

Автор решения: vsemozhebuty

Один из вариантов (используя 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 }

→ Ссылка
Автор решения: Pilaton

Если ответы должны быть один в один как примере вашем (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 }.

→ Ссылка