2015-06-22 1 views
0

Я узнаю о циклах массивов thorugh - я хочу передать результат выражения if else в функции forEach (внутри другой функции с параметром array как параметр) в HTML с использованием innerHTML (не обязательно должен быть innerHTML, если вы знаете лучшие методы Я не возражаю). Он проверяет, является ли число четным и должно возвращать true и false. Мой результат не определен, но в console.log я вижу, что цикл работает. Внизу я оставил «Что здесь», поскольку я не знаю, как правильно его выбрать.Как innerHTML функция с массивом в качестве параметра?

Любая помощь приветствуется, в том числе перестраивает код.

var myArray = function (nums) { 

    var average = 0; 
    var totalSum = 0; 

    nums.forEach(function (value) { 
     //returns total sum 
     totalSum = totalSum + value; 

     //return average 
     average = totalSum/nums.length; 

     //return true if at least one even if not false 
     if (value % 2 === 0) { 
      console.log(value + " true"); 
      return true; 
     } else { 
      console.log(value + " false"); 
      return false; 
     }; 

    }) 

    console.log("Total sum: " + totalSum); 
    console.log("Average: " + average); 
    console.log("Max number: " + Math.max.apply(null, nums)); 
    //document.getElementById("array").innerHTML = /*What in here?!*/ 
}; 


myArray([1, 1, 1, 2]) 
+0

* Я хочу передать результат функции forEach * - 'forEach' ничего не возвращает. Он должен вызывать функции, которые могут иметь побочные эффекты. – thefourtheye

+0

Хм ... Возможно, если бы не было ясно - в forEach у вас есть оператор if, который я хочу отобразить. Как тогда я должен отображать в HTML в div id = "array" - false или true? –

+0

В моей функции myArray нет оператора return ... Вот почему он возвращает undefined –

ответ

0

Просто переменную для появления четных или нечетных чисел.

var myArray = function (nums) { 
    var average = 0; 
    var totalSum = 0; 
    var hasEven = false; // flag if at least one value is even => true, otherwise false 
    nums.forEach(function (value) { 
     totalSum = totalSum + value; 
     hasEven = hasEven || !(value % 2); 
    }); 
    average = totalSum/nums.length; // just call it once 
    console.log("Total sum: " + totalSum); 
    console.log("Average: " + average); 
    console.log("Max number: " + Math.max.apply(null, nums)); 
    console.log("Contains at least one even value: " + hasEven); 
}; 
myArray([1, 1, 1, 2]); 
+0

Итак, вы создаете пустой массив evenOdd и добавляете к нему элементы? Как заставить функцию печатать только одно значение true, если в противном случае есть один и один ложь? –

+0

где вы хотите распечатать? в петле или снаружи в конце функции? –

+0

Мне просто интересно, как получить результат для печати true или false только один раз, когда условие выполнено или нет. Таким образом, результат будет в этом случае «true» вместо «false, false, false, true» –

-1

Простой способ будет использовать JSON.Stringify

document.getElementById("array").innerHTML = JSON.Stringify(nums); 
+0

Можете ли вы объяснить, почему я проголосовал? Я думаю, что это правильный ответ на проблему –

+0

, если этот вопрос для меня я не проголосовал за него ... –