Home  >  Article  >  Web Front-end  >  How to sum and find the maximum value of JS arrays

How to sum and find the maximum value of JS arrays

高洛峰
高洛峰Original
2017-01-14 10:42:311577browse

Preface

I encountered a problem during the interview: JS array sum function. The first thing that comes to my mind is array looping. However, I feel that when the interviewer asks this question, he must not be trying to test this well-known method. At that time, I was smart enough to think of a recursive function that continuously adds the items of the array. However, after struggling for a long time, I couldn't adjust the method. It turns out that this is not the optimal solution. Finally, the interviewer asked me if I had ever seen reduce(), and I really didn’t. So I came back to check the information. Array.reduce() is a new attribute added by ES5, and Array.reduceRight() is similar.

The following is a summary of the array summation method.

The crudest method: Loop to obtain

Add item by item through a for loop. Look at the code:

Array.prototype.sum = function (){
 var result = 0;
 for(var i = 0; i < this.length; i++) {
  result += this[i];
 }
 return result;
};
 
[1,4,7,2,10].sum(); // 24

Use the reduce method

Using the reduce method, you can write a sum method for array summation.

The reduce() method receives a function as an accumulator. Each value in the array (from left to right) starts to be reduced, and finally becomes a value.

Reduce syntax:

array.reduce(callback[, initialValue]);

The callback function accepts 4 parameters: previousValue (the value returned by the last callback call), currentValue (the element currently being processed), index (index) and the array itself (the first parameter of the first callback call), execute the function for each value in the array.

The initialValue parameter is optional and represents the initial value; if the initialValue parameter is specified, it will be regarded as the previous value initially used. If it is defaulted, the first element of the array will be used as the initial value of previous, and current will follow. Rank one.

Array.prototype.sum = function (){
 return this.reduce(function (partial, value){
  return partial + value;
 })
};
[1,4,7,2,10].sum(); // 24

Compared with the first method, using the reduce() method is more efficient.

To compare the efficiency of these two methods, you can directly call new Date() before and after the function is run to obtain the real-time time, so as to compare the execution time through the time difference. There will be no comparison here, because everyone's execution environment is quite different. The test result is that the execution time of the reduce() method is shorter.

JS array sum function and find the maximum value in the array

Example code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 
<title>php中文网_js数组求和和最大值方法_php中文网</title>
 
<meta name="keywords" content="站长,网页特效,网页特效代码,js特效,js脚本,脚本,广告代码,php.cn,www.php.cn,php中文网" />
 
<meta name="description" content="www.php.cn,php中文网,站长必备js特效及广告代码。大量高质量js特效,提供高质量广告代码下载,尽在php中文网" />
 
</head>
 
<body>
 
<a href="http://www.php.cn/">php中文网<</a>,站长必备的高质量网页特效和广告代码。jb51.net,站长js特效。<hr>
 
<script type="text/javascript">
 
//求和
 
Array.prototype.sum = function () {
 
 for (var sum = i = 0; i < this.length; i++)sum += parseInt(this[i]);
 
  return sum ;
 
};
 
//求最大值
 
Array.prototype.maxima = function () {
 
 for (var i = 0, maxValue = Number.MIN_VALUE; i < this.length; i++)parseInt(this[i]) > maxValue && (maxValue = this[i]);
 
 return maxValue;
 
};
 
//应用
 
var arr = [1,21,3,4,22,45,60,7,32];
 
alert(arr.join("+") + "=" + arr.sum()); alert(arr.join("|") + "中, 最大的数是:" + arr.maxima());
 
</script>
 
</body>
 
</html>

The above is the entire content of this article , I hope it will be helpful to everyone in using JavaScript. If you have any questions, please leave a message for discussion. The editor will reply to you in time.

For more articles sharing methods of summing and maximizing JS arrays, please pay attention to the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn