если еще только запись последней команды, данной без сравнения - javascript - PullRequest
0 голосов
/ 17 апреля 2020

Может ли кто-нибудь взглянуть на мою функцию и сказать, почему мое утверждение «если еще» не работает должным образом? Мне нужна функция для сравнения значений "inStock" и "weeklyAverage" в каждом объекте и предоставления мне ответа истина / ложь. Я новичок, поэтому, пожалуйста, прости мой вопрос новичка. Как мне исправить это там, где он дает мне ответ по объекту?

 let inventory = [
      { candy: "Twizzlers", inStock: 180, weeklyAverage: 200 },
      { candy: "Sour Patch Kids", inStock: 90, weeklyAverage: 100 },
      { candy: "Milk Duds", inStock: 300, weeklyAverage: 170 },
      { candy: "Now and Laters", inStock: 150, weeklyAverage: 40 }
    ];


 function shouldWeOrderThisCandy(inventory, candy)
{
   for (let i=0; i< inventory.length; i++)
  {
    if ((inventory[i].inStock) < (inventory[i].weeklyAverage))
    {
      answer= true;
    }
    else
    {
      answer= false;  
    }
    return answer
  }
}

1 Ответ

0 голосов
/ 17 апреля 2020

В конце 1-го цикла итерации, т. Е. Для первого элемента инвентаря, например, { candy: "Twizzlers", inStock: 180, weeklyAverage: 200 } вы выполняете деталь кондиционирования

if ((inventory[i].inStock) < (inventory[i].weeklyAverage))
    {
      answer= true;
    }
    else
    {
      answer= false;  
    }

, затем сразу возвращаете answer, для которого установлено значение либо true, либо false. Функция возвращает значение, которое записывается сразу после return всякий раз, когда она видит return. Вы возвращаете значение (answer) в конце первой итерации, поэтому функция возвращает логический результат, полученный путем сравнения, выполненного для первого объекта в массиве. Выполнение будет читаться как указано ниже:

{ candy: "Twizzlers", inStock: 180, weeklyAverage: 200 }
inventory[0].inStock = 180
inventory[0].weeklyAverage = 200

inventory[0].inStock < inventory[0].weeklyAverage
        180          <           200

answer = true
return true
...