如何拆分文本字段输入以便计算数据的中位数、众数平均值和标准差?

How can I spilt a text field input so I can calculate median, mode mean and Standard Deviation of the data?

我想计算 javascript 中数据输入的中位数、众数、均值和标准差,但我不能将我的输入溢出到文本字段中,所以它会像这样 1 2 3 4 5 12345.

我试过分割法,但好像不行。

function mean(values) {
  var total = 0,
    i, results;
  for (i = 0; i < values.length; i += 1) {
    total += values[i];
  }
  results = total / values.length;
  document.getElementById("meanOutput").innerHTML = results;
}

function mode() {
  document.getElementById("modeOutput").innerHTML = "Fahad!";
}

function median() {
  document.getElementById("medianOutput").innerHTML = "Nasser";
}

function stdv() {
  document.getElementById("stdvOutput").innerHTML = "Alqahtani";
}
Mean: <input type="text" id="meanText"> Median:
<input type="text" id="medianText"> Mode:
<input type="text" id="ModeText"> Standard Deviation of the data:<input type="text" id="STDV">

<p id="meanOutput"></p>
<p id="modeOutput"></p>
<p id="medianOutput"></p>
<p id="stdvOutput"></p>



<button onclick="mean(document.getElementById('meanText').value); median(); mode(); stdv();">Calculate</button>

我希望文本字段输入接受 1 2 3 4 5 并计算它而不是显示 NaN

尝试以下操作。这个问题在某种程度上与类型强制有关。您正在接收一个字符串作为参数,然后迭代字符串的每个字符和 "adding" 它们(这意味着您正在连接字符,而不是添加数字。要添加数字,您必须首先解析它们parseInt())。最后,当你做除法时,JS 自动将你的字符串 'transforms' 转换为数字(这只发生在除法和乘法上。当加法或减法时,JS 会做相反的事情,将数字转换为字符串)。当您组合多种数据类型时,就会发生这种奇怪的事情。

function mean(values) {
  var total = 0,
    i, results;
  var onlyNumbers = values.split(/\D/);
  for (i = 0; i < onlyNumbers.length; i += 1) {
    total += parseInt(onlyNumbers[i]);
  }
  results = total / onlyNumbers.length;
  document.getElementById("meanOutput").innerHTML = results;
}

function mode() {
  document.getElementById("modeOutput").innerHTML = "Fahad!";
}

function median() {
  document.getElementById("medianOutput").innerHTML = "Nasser";
}

function stdv() {
  document.getElementById("stdvOutput").innerHTML = "Alqahtani";
}
Mean: <input type="text" id="meanText"> Median:
<input type="text" id="medianText"> Mode:
<input type="text" id="ModeText"> Standard Deviation of the data:<input type="text" id="STDV">

<p id="meanOutput"></p>
<p id="modeOutput"></p>
<p id="medianOutput"></p>
<p id="stdvOutput"></p>



<button onclick="mean(document.getElementById('meanText').value); median(); mode(); stdv();">Calculate</button>

问题涉及字符串类型到整数的类型转换,您需要解析输入的数字以便进行数学计算,并且
类型转换前 你需要将你的输入(用 space 分隔的不同数字,例如 22 23 24)转换为一个子字符串数组,这可以使用 javascript 中的拆分函数来实现。特别是在您的情况下,您需要根据输入中的 spaces 进行拆分。 在您的代码中休息一切都很好。

希望这对您有所帮助。

代码更改只会

    function mean(values) {
       var total = 0,
       i, results;
       var arraySubstrings = values.split(' ');
       for (i = 0; i < arraySubstrings.length; i += 1) {
          total += parseInt(arraySubstrings[i]);
       }

    results = total / arraySubstrings.length;   
    document.getElementById("meanOutput").innerHTML = results;
   }