머리말
인터뷰에서 문제에 직면했습니다: 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 중국어 웹사이트를 주목하세요!