我在HTML中用逗号分隔了一堆数字作为字符串。我想在JavaScript中将数字转换为数组,然后使用数组中的数字来执行添加和查找平均值等功能。
我的页面如下:
我目前的代码是:
<script>
var number = document.getElementById("divout")
//up here i want to create an array and use the array in the function below.
var sum = 0;
var average = 0;
var squared = 0;
function math(x)
{
document.write("amount of numbers=" + x.length + "<br>")
for (var i = 0; i <= x.length - 1; i++)
{
sum = sum+a[i];
squared = squared+(x[i]*x[i]);
average = sum/x.length;
}
}
math(number)
document.write("sum="+ sum + "<br>")
document.write("average-" + average + "<br>")
document.write("squared=" + squared + "<br>")
</script>
All Divisors:
<br>
<textarea rows="10" cols="50" placeholder="Divisors" id="divout">0,1,3,7,21</textarea>
<br>
(Source)
我该怎么做?
答案 0 :(得分:2)
您可以使用arr.split("")
功能来实现此目的。首先抓住元素内部的内容,然后将其拆分为数组。这是一个JSFiddle的例子:
https://jsfiddle.net/mvvr8jja/
我没有这样做是我的例子,但你想在执行算术之前使用parseInt()
将数组中的项转换为整数,因为它们当前是字符串值。
答案 1 :(得分:0)
看起来你想1)找到数字的总和,2)找到各个数字的平方,3)找到数字总和的平均值。你无法用那个循环做到这一点,当然就数字而言。
这是您可能会觉得有用的替代方法:
Helper函数返回给定id的元素。
var Q = function (id) { return document.getElementById(id); };
取textContent
divout
,将其拆分为数组,然后每个数组将字符串强制转换为整数。
var arr = Q('divout').textContent.split(',').map(Number);
与map
和reduce
一起使用的两个函数,用于查找数组中数字的总和和平方。
var sumNumbers = function (p, c) { return p + c; };
var squareNumbers = function (x) { return x * x; };
找出数字的总和,平方和平均值。 map
返回一个新数组,reduce
返回一个整数。
var sum = arr.reduce(sumNumbers);
var square = arr.map(squareNumbers);
var avg = sum / arr.length;
将操作结果添加到DOM。
Q('sum').textContent = sum; // 32
Q('square').textContent = square; // 0,1,9,49,441
Q('avg').textContent = avg; // 6.4