머리말
인터뷰에서 발생하는 문제 : 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감소 방법을 사용하십시오
reduce 방법을 사용하여 배열을 합산하기위한 sum 메소드를 작성할 수 있습니다.
reduce() 메소드는 축합기로서 함수를 수신하고 배열의 각 값 (왼쪽에서 오른쪽으로)이 줄어들 기 시작하여 값이됩니다.
감소 구문 :
Array.reduce (콜백 [, InitialValue]);
callback 함수는 4 개의 매개 변수를 허용합니다 : previousValue (마지막 콜백에 의해 리턴 된 값), currentValue (현재 요소가 처리 중), index (인덱스) 및 배열 자체 ( callback 의 첫 번째 매개 변수는 처음으로 호출 됨)를 허용하고 배열의 각 값에 대한 기능을 실행합니다.
initialValue 매개 변수는 선택 사항이며 초기 값을 나타냅니다. initialValue 매개 변수가 지정되면 원래 사용 된 previous 값으로 간주됩니다. 기본값 인 경우 배열의 첫 번째 요소는 previous 초기 값으로 사용되며 current 뒷면의 한 위치입니다.
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 배열 합계 기능 및 배열에서 최대 값을 찾으십시오.
예제 코드
<! doctype html public "-// w3c // dtd xhtml 1.0 transitional // en" "http://www.w.w.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> wulin.net_js kicerer </<meta = ""meta = " Content = "웹 마스터, 웹 페이지 특수 효과, 웹 페이지 특수 효과 코드, JS 특수 효과, JS 스크립트, 스크립트, 광고 코드, vevb.com, www.vevb.com, wulin.com" /> <meta name = "description"content = "www.vevb.com, wulin.com, js 특수 효과 및 광고 특성이 있어야합니다. 광고 코드 다운로드, wulin.com "/> </head> <body> <a href ="// www.vevb.com/">wulin.com </a>, 웹 마스터에는 고품질 웹 페이지 특수 효과 및 광고 코드가 있어야합니다. VEVB.com, 웹 마스터 JS 특수 효과. <hr> <script type = "text/javaScript"> // sum 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,45,45,60,7,32]; Alert (arr.join ( " +") = " + arr.sum ()); ALERT (arr.join ( "|") + ", 가장 큰 숫자는" + arr.maxima ()); </script> </body> </html>입니다위는이 기사의 모든 내용입니다. 모든 사람이 자바 스크립트 사용에 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨두고 토론하십시오. 편집자는 제 시간에 모든 사람에게 답장을합니다.