【问题标题】:How to innerHTML a function with array as parameter?如何innerHTML一个以数组为参数的函数?
【发布时间】:2015-09-07 18:43:02
【问题描述】:

我正在学习循环遍历数组 - 我想将 forEach 函数中的 if else 语句的结果(在另一个以数组作为参数的函数内)传递给使用 innerHTML 的 HTML(如果您知道更好,则不必是 innerHTML方法我不介意)。它检查数字是否是偶数并且应该返回真假。我的结果是未定义的,但在 console.log 中我可以看到循环正在工作。在底部我留下了“这里有什么”,因为我不知道如何正确选择它。

欢迎任何帮助,包括重建代码。

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])

【问题讨论】:

  • 我想传递 forEach 函数的结果 - forEach 不返回任何内容。就是调用可能有副作用的函数
  • 嗯......也许如果不清楚 - 在 forEach 中你有一个 if 语句 - 我想显示它。那么我应该如何在 div id="array" 中的 HTML 中显示 - false 还是 true?
  • 您的 myArray 函数没有返回语句...这就是它返回 undefined 的原因
  • if/else 语句中的forEach 函数中有return 语句。我怎样才能得到它并将其传递给 HTML?
  • 您到底想在 HTML 中看到什么,您能给我们一个期望输出的示例吗?

标签: javascript arrays loops foreach innerhtml


【解决方案1】:

只需为偶数或奇数的出现取一个变量。

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]);

【讨论】:

  • 所以你创建了一个空数组 evenOdd 并向其中添加元素?如果有一个偶数则如何使函数只打印一个真,否则一个假?
  • 您想在哪里打印?在循环中还是在函数末尾?
  • 我只是想知道当条件是否满足时,如何让结果只打印一次 true 或 false 。所以在这种情况下结果是“true”而不是“false,false,false,true”
  • 好的,我明白了。如果一个值是奇数,则为真,否则为假。
  • 太棒了!但是你能解释一下这个结构吗: evenOdd = evenOdd || !(值 % 2),好吗?
【解决方案2】:

一个简单的方法是使用JSON.Stringify

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

【讨论】:

  • 你能解释为什么我被否决了吗?我认为这是对问题的有效答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
相关资源
最近更新 更多