JavaScript:将CSV转换为数组并对其执行操作

时间:2016-04-04 00:34:08

标签: javascript arrays

我在HTML中用逗号分隔了一堆数字作为字符串。我想在JavaScript中将数字转换为数组,然后使用数组中的数字来执行添加和查找平均值等功能。

我的页面如下:

enter image description here

我目前的代码是:

<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

我该怎么做?

2 个答案:

答案 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);

mapreduce一起使用的两个函数,用于查找数组中数字的总和和平方。

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

DEMO