>  기사  >  웹 프론트엔드  >  JS 배열의 최대값을 합산하고 찾는 방법

JS 배열의 최대값을 합산하고 찾는 방법

高洛峰
高洛峰원래의
2017-01-14 10:42:311577검색

머리말

인터뷰에서 문제에 직면했습니다: JS 배열 합계 기능. 내 마음에 가장 먼저 떠오르는 것은 배열 루핑입니다. 그러나 나는 면접관이 이 질문을 할 때 그가 이 잘 알려진 방법을 시험하려고 해서는 안 된다고 생각합니다. 그 당시 나는 배열의 항목을 계속해서 추가하는 재귀 함수를 생각해 낼 만큼 똑똑했지만, 오랜 시간 동안 고민하다가 이것이 최적의 해결책이 아니라는 것이 밝혀졌습니다. 마지막으로 면접관은 나에게 Reduce()를 본 적이 있는지 물었지만 나는 실제로 본 적이 없었다. 그래서 정보를 확인하러 돌아왔습니다. Array.reduce()는 ES5에서 추가된 새로운 속성이고 Array.reduceRight()도 비슷합니다.

다음은 배열 합산 방법을 요약한 것입니다.

가장 조악한 방법: 루프를 통해 획득

for 루프를 통해 항목별로 항목을 추가합니다. 코드를 보세요:

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

reduced 메서드 사용

reduced 메서드를 사용하면 배열 합계를 위한 sum 메서드를 작성할 수 있습니다.

reduce() 메소드는 누산기 역할을 하는 함수를 전달받으며 배열의 각 값(왼쪽에서 오른쪽으로)이 감소하기 시작하여 최종적으로 값이 됩니다.

구문 줄이기:

array.reduce(callback[, initialValue]);

콜백 함수는 4개의 매개변수를 허용합니다: 이전값(마지막 콜백 호출에서 반환된 값), 현재값(현재 처리 중인 요소), 인덱스(index) 및 배열 자체(첫 번째 콜백 호출의 첫 번째 매개변수)를 사용하여 배열의 각 값에 대해 함수를 실행합니다.

initialValue 매개변수는 선택사항이며 초기값을 나타내며,initialValue 매개변수가 지정되면 초기에 사용된 이전 값으로 간주됩니다. 기본값으로 설정되면 배열의 첫 번째 요소가 사용됩니다. 이전의 초기 값은 나중에 사용됩니다.

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

첫 번째 방법에 비해, Reduce() 메서드를 사용하는 것이 더 효율적입니다.

이 두 메소드의 효율성을 비교하려면 함수 실행 전후에 new Date()를 직접 호출하여 실시간 시간을 구해 시차를 통해 실행 시간을 비교할 수 있습니다. 모든 사람의 실행 환경이 상당히 다르기 때문에 여기서는 비교가 없습니다. 테스트 결과, Reduce() 메소드의 실행 시간이 짧아지는 것으로 나타났습니다.

JS 배열 sum 함수를 이용하여 배열의 최대값 구하기

예제 코드

<!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>

위 내용은 이 내용의 전체 내용입니다. 기사가 JavaScript를 사용하는 모든 사람에게 도움이 되기를 바랍니다. 질문이 있는 경우 토론을 위해 메시지를 남겨주시면 편집자가 시간에 맞춰 답변해 드리겠습니다.

JS 배열을 합산하고 최대화하는 방법을 공유하는 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.