что я делаю не так?помогите разобраться

подскажите как мне выполнить эти два условия? все остальное работает: В теле функции composeMessage используется this Функция composeMessage вызывается методом call внутри цикла for

а остальные условия - выполняются Не объявляй дополнительные параметры функции composeMessage(position). Используй call для вызова функции в контексте одного объекта-заказа. Используй this в теле функции для доступа к свойствам объекта-заказа в контексте которого она была вызывана. Дополни код так, чтобы в переменной messages получился массив сообщений о статусе заказов из массива orders с помощью цикла for.

const orders = [
  { email: '[email protected]', dish: 'Burger' },
  { email: '[email protected]', dish: 'Pizza' },
  { email: '[email protected]', dish: 'Taco' },
];
    
// Пиши код ниже этой строки
function composeMessage(position) {
  for ( position=1; position<orders.length+1; position++){
    messages.push(`Готовим ${orders[position-1].dish} для ${orders[position-1].email}. Ваш заказ ${position}-й в очереди.`)
  }
}
    
const messages = [];
    
composeMessage()
console.log(messages);


Ответы (1 шт):

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

const orders = [
  { email: '[email protected]', dish: 'Burger' },
  { email: '[email protected]', dish: 'Pizza' },
  { email: '[email protected]', dish: 'Taco' },
];
    
function composeMessage(index) {
  return `Готовим ${this.dish} для ${this.email}. Ваш заказ ${index + 1}-й в очереди.`;
}
    
const messages = orders.map((o, i) => composeMessage.call(o, i));
console.log(messages);

const orders = [
  { email: '[email protected]', dish: 'Burger' },
  { email: '[email protected]', dish: 'Pizza' },
  { email: '[email protected]', dish: 'Taco' },
];
    
function composeMessage(position) {
  return `Готовим ${this.dish} для ${this.email}. Ваш заказ ${position}-й в очереди.`;
}
    
const messages = [];
for (let i = 0; i < orders.length; i++) {
  messages.push(composeMessage.call(orders[i], i + 1));
}
console.log(messages);

→ Ссылка