JavaScript fun: Statistical Precipitation

Source: Internet
Author: User
The meteorological station staff commissioned you to analyze a group of data. Here, the precipitation of some cities around the world from January 1, January to January 1, December is collected from & quot; \ n & quot; separated, each city name is followed by a & quot;: & quot; colon. The meteorological station staff commissioned you to analyze a group of data. Here, the precipitation of some cities around the world from January to December is separated by "\ n, each city name is followed by a colon.

As follows:


var data = "Rome:Jan 81.2,Feb 63.2,Mar 70.3,Apr 55.7,May 53.0,Jun 36.4,Jul 17.5,Aug 27.5,Sep 60.9,Oct 117.7,Nov 111.0,Dec 97.9"+ "\n"+ "London:Jan 48.0,Feb 38.9,Mar 39.9,Apr 42.2,May 47.3,Jun 52.1,Jul 59.5,Aug 57.2,Sep 55.4,Oct 62.0,Nov 59.0,Dec 52.9"+ "\n"+ "Paris:Jan 182.3,Feb 120.6,Mar 158.1,Apr 204.9,May 323.1,Jun 300.5,Jul 236.8,Aug 192.9,Sep 66.3,Oct 63.3,Nov 83.2,Dec 154.7"+ "\n"+ "NY:Jan 108.7,Feb 101.8,Mar 131.9,Apr 93.5,May 98.8,Jun 93.6,Jul 102.2,Aug 131.8,Sep 92.0,Oct 82.3,Nov 107.8,Dec 94.2"+ "\n"+ "Vancouver:Jan 145.7,Feb 121.4,Mar 102.3,Apr 69.2,May 55.8,Jun 47.1,Jul 31.3,Aug 37.0,Sep 59.6,Oct 116.3,Nov 154.6,Dec 171.5"+ "\n"+ "Sydney:Jan 103.4,Feb 111.0,Mar 131.3,Apr 129.7,May 123.0,Jun 129.2,Jul 102.8,Aug 80.3,Sep 69.3,Oct 82.6,Nov 81.4,Dec 78.2"+ "\n"+ "Bangkok:Jan 10.6,Feb 28.2,Mar 30.7,Apr 71.8,May 189.4,Jun 151.7,Jul 158.2,Aug 187.0,Sep 319.9,Oct 230.8,Nov 57.3,Dec 9.4"+ "\n"+ "Tokyo:Jan 49.9,Feb 71.5,Mar 106.4,Apr 129.2,May 144.0,Jun 176.0,Jul 135.6,Aug 148.5,Sep 216.4,Oct 194.1,Nov 95.6,Dec 54.4"+ "\n"+ "Beijing:Jan 3.9,Feb 4.7,Mar 8.2,Apr 18.4,May 33.0,Jun 78.1,Jul 224.3,Aug 170.0,Sep 58.4,Oct 18.0,Nov 9.3,Dec 2.7"+ "\n"+ "Lima:Jan 1.2,Feb 0.9,Mar 0.7,Apr 0.4,May 0.6,Jun 1.8,Jul 4.4,Aug 3.1,Sep 3.3,Oct 1.7,Nov 0.5,Dec 0.7";

Now the task is like this. You have to provide two functions, one for calculating the average precipitation of each month in a specified City, and the other for calculating the variance of precipitation.

The function prototype is as follows:

Function mean (town, string)

Function variance (town, string)

The town parameter indicates the city name, while the string parameter indicates the precipitation data.

Examples:


mean("London", data) \\ 51.19(9999999999996) variance("London", data) \\ 57.42(833333333374)

The idea is simple:

1. to calculate the variance, you must first calculate the mean.

2. to calculate the average, extract the precipitation data based on the city name.

3. To retrieve precipitation data, you must traverse all the data, locate and split the string.

Notes:

1. The specified city may not be found. If it does not exist,-1 is returned directly.

2. There may be Precision Problems in floating-point calculation, which is negligible and does not need to be integer or truncated.


// Extend the startWith method if (typeof String. prototype. startWith! = "Function") {String. prototype. startWith = function (str) {return this. indexOf (str) === 0 ;};// query the precipitation data of the specified city function searchData (town, strng) {var datas = strng. split ("\ n"); var num = datas. length; for (var I = 0; I <num; I ++) {if (datas [I]. startWith (town) {return datas [I] ;}return null ;}// calculate the average precipitation function mean (town, strng) {var total = 0; var current = searchData (town, strng); if (current) {var pair = Current. split (":"); if (pair [0]! = Town) {return-1;} var allMonths = pair [1]. split (","); for (var j = 0; j <allMonths. length; j ++) {var perMonth = allMonths [j]; total + = parseFloat (perMonth. split ("") [1]);} return total/12;} return-1;} // returns variance function variance (town, strng) {var average = mean (town, strng); var total = 0; var current = searchData (town, strng); if (current) {var pair = current. split (":"); if (pair [0]! = Town) {return-1;} var allMonths = pair [1]. split (","); for (var j = 0; j <allMonths. length; j ++) {var perMonth = allMonths [j]; var rainfall = parseFloat (perMonth. split ("") [1]); total + = Math. pow (average-rainfall, 2);} return total/12;} return-1 ;}

The above is JavaScript fun: The content of precipitation statistics. For more information, please follow the PHP Chinese Network (www.php1.cn )!

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.