2016-04-04 59 views
-1

我有一串用逗號分隔的數字作爲字符串。我想在JavaScript中將數字轉換爲數組,然後使用數組中的數字來執行添加和查找平均值等功能。JavaScript:將CSV轉換爲數組並對其執行操作

我的頁面是這樣的:

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

我該怎麼辦呢?

+3

[你需要你的代碼(不是圖像)添加到這個問題。(https://stackoverflow.com/help/mcve) – Andy

+0

你也想加入預期的結果因爲不清楚你需要展示什麼。 – Andy

+0

注意:[爲什麼jQuery或諸如getElementById之類的DOM方法未找到該元素?](http:// stackoverflow。com/questions/14028959/why-does-jquery-or-a-dom-method-such-getelementbyid-not-find-the-element) –

回答

2

您可以使用arr.split("")函數來實現此目的。首先抓住元素內部的內容,然後將其分割成一個數組。下面是一個例子的的jsfiddle:

https://jsfiddle.net/mvvr8jja/

我沒有這樣做,這是我的榜樣,但你想在數組中的項目轉換爲使用parseInt()整數之前,因爲他們是目前你能進行算術字符串值。

+0

幫助盲人的問題 – Mike

+0

沒問題的人。 – theblindprophet

0

它看起來像你想1)找到數字的總和,2)找到單個數字的平方,3)找到數字總和的平均值。在這個循環中你無法做到這一點,當然在數字方面也是如此。

這裏,你可能會發現有用的替代方法:

輔助函數返回一個給定id的元素。

var Q = function (id) { return document.getElementById(id); }; 

注意到的divouttextContent,它分割成一個數組,那麼對於每個陣列脅迫字符串爲整數。與mapreduce使用

var arr = Q('divout').textContent.split(',').map(Number); 

兩個函數找到數組中的數字之和廣場。

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