so, i've been tasked few calculations , build custom js statistics library. 3 things have left create functions range, variance, , standard deviation. i'm doing here passing array (x) js functions, keep coming blank. doing wrong?
function findsum(x) { var sum = 0; for(i = 0; < x.length; i++) { sum = sum + x[i]; } return sum; }; function findmean(x) { return findsum(x) / x.length; }; function findmedian(x) { x.sort( function(a,b) {return - b;} ); var half = math.floor(x.length/2); if(x.length % 2) return x[half]; else return (x[half-1] + x[half]) / 2.0; } // ascending functions sort function ascnum(a, b) { return - b; } function clip(arg, min, max) { return math.max(min, math.min(arg, max)); }; function findmode(x) { var arrlen = x.length; var _arr = x.slice().sort(ascnum); var count = 1; var maxcount = 0; var nummaxcount = 0; var mode_arr = []; var i; (i = 0; < arrlen; i++) { if (_arr[i] === _arr[i + 1]) { count++; } else { if (count > maxcount) { mode_arr = [_arr[i]]; maxcount = count; nummaxcount = 0; } // there multiple max counts else if (count === maxcount) { mode_arr.push(_arr[i]); nummaxcount++; } // resetting count new value in array count = 1; } } return nummaxcount === 0 ? mode_arr[0] : mode_arr; }; function findrange(x) { x.sort( function (a, b) {return a-b;} ); } function findvariance(x) { var mean = findmean(x); return findmean(array.map(findsum(sum)) { return math.pow(sum - mean, 2); })); }, function findstandarddeviation(x) { return math.sqrt(findvariance(x)); };
the html code:
<html> <head> <h1>statistical calculations</h1> <title>calculating stats</title> <link rel="stylesheet" type="text/css" href="style.css"> <script src='stats.js'></script> <script language="javascript"> function addnumber() { var input = document.getelementbyid('input').value; var list = document.getelementbyid('list'); var option = document.createelement('option'); list.options.add(option); option.text = input; } function getstatistics() { var list = new array(); var select = document.getelementbyid('list'); for(i = 0; < select.options.length; i++) { list[i] = parseint(select.options[i].text); } document.getelementbyid('summation').value =findsum(list); document.getelementbyid('mean').value = findmean(list); document.getelementbyid('median').value = findmedian(list); document.getelementbyid('mode').value = findmode(list); document.getelementbyid('variance').value = findvariance(list); document.getelementbyid('standarddev').value = findstandarddeviation(list); document.getelementbyid('range').value = findrange(list); document.getelementbyid('max').value = findmax(list); document.getelementbyid('min').value = findmin(list); } </script> </head> <body> <table> <tr> <td>input number:</td><td><input type='text' id='input'></td> </tr> <tr> <td colpsan='2'><input type='button' value='add number' onclick='addnumber()'></td> </tr> <tr> <td colspan='2'> <select id='list' size='5'> </select> </td> </tr> <tr> <td colpsan='2'><input type='button' value='calculate!' onclick='getstatistics()'></td> </tr> <tr> <td>summation:</td><td><input type='text' id='summation' readonly></td> </tr> <tr> <td>mean:</td><td><input type='text' id='mean' readonly></td> </tr> <tr> <td>median:</td><td><input type='text' id='median' readonly> </td> </tr> <tr> <td>mode:</td><td><input type='text' id='mode' readonly></td> </tr> <tr> <td>max:</td><td><input type='text' id='max' readonly></td> </tr> <tr> <td>min:</td><td><input type='text' id='min' readonly></td> </tr> <tr> <td>range:</td><td><input type='text' id='range' readonly></td> </tr> <tr> <td>variance:</td><td><input type='text' id='variance' readonly></td> </tr> <tr> <td>standard deviation:</td><td><input type='text' id='standarddev' readonly></td> </tr> </table> </body> </html>
the last 3 seem absolutely nothing, , i've been bashing head in last few days trying figure out. if sort functions out working order, it'd appreciated! i'm sure array has been passing functions correctly, seeing first 4 functions worked.