2014-02-11 3 views
1

Я в настоящее время в классе веб-программирования, который преподается бизнес-профессором. Естественно, он мало разбирается в коде и просто указывает мне на книгу (это гигантский беспорядок спагетти повсюду).JavaScript средняя функция

Точное задание, с которым я столкнулся, находится здесь, в кавычках. Надеюсь, это не выглядит слишком грязным.

DATA ДОСТУПНЫ

Существует локальное значение хранения вы должны названы: отборочный
Существует локальное значение хранения вы должны названы: фактор
Существует массив вам нужно по имени : sales
Существует массив и локальное хранилище, поэтому просто используйте их.

ЧТО ВОЗВРАТ

Вернуться средний бонус.

Как рассчитать среднюю бонусной

  1. Каждая сумма в продажах массива [], что более чем Классификатор получает бонус.
    Запомнить: массив означает, что вы думаете, для цикла().
  2. Бонус рассчитывается как сумма продаж, умноженная на коэффициент.
  3. Если продажа превышает квалификатор, добавьте бонус к сумме бонусов.
  4. Рассчитайте среднее значение, разделив общее количество на количество бонусов, которые квалифицируются.
    Помните,: вы возвращаете среднее значение бонусов, которые квалифицируются; а не общее количество бонусов.

Я понимаю, что этот сайт не для вас люди, чтобы просто делать свою домашнюю работу для меня, я не ожидал, что произойдет. Ниже приведен текущий код того, что у меня есть. Я должен отметить, что учитель предоставил нам наш код в консоль, разработанную университетом. Причина, по которой я говорю это, заключается в том, что в этом назначении уже определены определенные локальные переменные хранилища, а также массив. Я пытаюсь проверить эту функцию с помощью блокнота и сохранить его в документе HTML и проверить его с помощью браузера. Вы заметите, что мой код ниже написан для проверки в браузере и что я сам определил переменные array и localstorage. Надеюсь, это имеет смысл.

Вот мой JavaScript:

sales = new [Array](); 

sales[0] = 3; 
sales[1] = 167; 
sales[2] = 191; 
sales[3] = 1; 
sales[4] = 45; 

localStorage.qualifier=5; 
localStorage.factor=2; 

total = 0; 

function myFunction() { 
    for (i=0;i<sales.length;i++){ 
      if (sales[i]>localStorage.qualifier) { 
       bonus = sales[i]*localStorage.factor; 
       total = total + bonus;     
      }; 
      avg = total/bonus; 
    }; 
    return avg; 
}; 
myFunction(); 

alert(extraPay()) 

Я хочу написать функцию для вычисления среднего бонуса. Я попробовал использовать этот текстовый редактор на основе web из repl.it, и я получаю ошибку типа, говоря, что объект не является функцией. Я искал ошибку, которая привела меня на этот сайт и впоследствии создала учетную запись. Большое вам спасибо за ваше время, если бы вы могли указать, где мой код идет не так, или если я просто сумасшедший повсюду, это действительно поможет. Благодаря!Извините за мучительно длинный пост.

+2

Может быть, это 'продаж = новый [массив]();' - Я не думаю, что это разрешено? Просто используйте 'var sales = [];' – Ian

+0

Мой профессор «требует», чтобы код был написан «по-своему», что расстраивает, так как обычно это не работает. Я попробую свой путь, хотя бы посмотреть, будет ли это работать. –

ответ

4

Ваша ошибка, вероятно, из-за этой линии:

alert(extraPay()); 

Вы сообщаете к способу, который не существует, если она не будет определена в другом месте.

Кроме того, он гораздо быстрее объявлять массивы, используя только кронштейн обозначения:

var sales = []; 

Если вы собираетесь использовать обозначение создания объекта, вы должны сделать это:

var sales = new Array(); 

Наконец, основанный на задании, и ваш код, я не думаю, что вы получите то, что хотите. Вы вычисляете общее количество и делите его на последнюю сумму бонуса. Я думаю, что вам нужно сделать, это вычислить общее количество и отслеживать, сколько раз у вас есть бонус. Затем разделите сумму на счетчик бонусов.

function myFunction() { 
    var counter = 0; 
    for (i=0;i<sales.length;i++){ 
     if (sales[i]>localStorage.qualifier) { 
      bonus = sales[i]*localStorage.factor; 
      total = total + bonus; 
      counter++;     
     }; 
     avg = total/counter; 
    }; 
    return avg; 
}; 
myFunction(); 
+0

«extraPay» - это функция, которую профессор хочет использовать. Когда я начал писать код, я использовал имя myFunction при аварии. Глупая ошибка. D'о. –

+0

Я попробую ваши другие предложения здесь через секунду. Профессор очень придирчив к тому, как он хочет, чтобы мы писали наше добро, что раздражает, когда это противоречит тому, что говорит большинство учебников по JavaScript. –

+0

Он работал и возвращал номер, который имеет смысл. Я предполагаю, что я отсутствовал, это переменная, чтобы держать счетчик бонусов, как вы упомянули. Огромное спасибо. –

0

Все указали на некоторые из синтаксических ошибок и общую странность с вашим кодом. Я укажу, что вы неправильно прочитали одну из инструкций:

Рассчитать среднее значение, разделив общее количество на количество бонусов, которые соответствуют.

В настоящее время вы делаете это ...

total = total + bonus; 

... когда вы должны быть деления на количество квалификации бонусы вместо этого. Для этого вам нужна новая переменная bonusesQualified:

function calculate(sales) { 
    var total = 0, bonusesQualified = 0; 
    for (i = 0; i < sales.length; i++) { 
    if (sales[i] > qualifier) { 
     bonus = sales[i] * factor; 
     total = total + bonus; 
     bonusesQualified++; 
    }; 
    avg = total/bonusesQualified; 
    }; 
    return avg; 
}; 

Full demo

+0

А, этот ответ похож на тот, на который я ответил выше. Это помогло мне с тем, что мне было нужно. Огромное спасибо. Я согласен с тем, что мой код имеет странность, я играл с JavaScript до этого класса, и то, чему этот профессор учит, ничем не отличается от того, что я видел. –

Смежные вопросы