JavaScript에서는 Math.Max ()의 내장 최대 값을 사용할 수 있지만 여러 배열에서 최대 값을 추출하는 것은 여전히 어렵습니다.
문제 설명
배열이 있다고 가정 하고이 배열에는 숫자의 서브 어레이가 포함되어 있으며, 우리가하고 싶은 것은 배열의 각 서브 어레이에서 최대 최대 숫자를 반환하는 것입니다.
기본 솔루션
함수 bargeoffour (arr) {var results = []; // 저장 할 결과 변수를 작성 // 외부 루프를 생성하여 외부 배열 (var n = 0; n <arr.length; n ++) {var largenumber = 0; // 가장 큰 숫자를 저장하기위한 두 번째 변수를 작성 // (var sb = 0; sb <arr [n] .length; sb ++) {// 서브 어레이의 요소가 현재 최대 저장된 값보다 큰지 여부를 확인하기 ARR [n] [sb];}} // 내부 루프 후, 각 서브 어레이의 값을 배열 결과 결과 [n] = argenumber;} // 배열 반환 결과를 반환합니다. // [34, 456, 4567, 78]위의 방법은 정상적인 솔루션으로, 배열을 가로 지르고 루프의 경우 두 가지를 통해 서브 어레이가 있습니다.
각 서브 어레이에 트래버스 된 최대 값을 저장하기 위해 변수를 생성합니다.
외부 어레이를 가로 지르는 외부 루프를 만듭니다
최대 값을 저장하려면 두 번째 변수 인 큰 변수를 작성하십시오. 이 변수 값은 루프를 위해 내부 외부에 배치해야합니다.
루프가 서브 어레이에서 각 요소를 반복 할 수있는 두 번째를 만듭니다.
IF 문은 현재 서브 어레이의 요소가 현재 서브 어레이에 저장된 최대 값보다 큰지 여부를 결정하는 데 사용됩니다. 사실이라면이 최대 값을 크게 저장하십시오.
내부 루프가 완료되면 각 서브 어레이의 최대 값은 처음 선언 된 변수 결과에 저장됩니다.
마지막으로 결과 배열을 리턴합니다
모든 서브 배열에서 각 최대 값을 취한 후에는 새로운 배열 결과가 나타납니다. 현재로서는 다음과 같이 통과하면됩니다.
Array.prototype.max = function () {return math.max.apply ({}, this);} max (arr) .max ();최대 값을 얻을 수 있습니다.
BARGEOFFOR ([[1,34], [456,2,3,44,234], [4567,1,4,5,6], [34,78,23,1]]). Max (); // 4567
중간 솔루션
함수 BARGEOFFOUR (ARR) {// MAP () 메소드 및 콜백 함수를 사용하여 서브 어레이의 최대 값을 함께 결합하여 새 배열 return ARR.MAP (function (group) {// 각 서브 어레이의 최대 값을 그룹 배열에 반환하기 위해 Method Retay retry group.reduce.reduce (function (prev, current) {// return prever, preverturn (현재) (현재) (현재). prev;});});});} 대규모 대규모 ([[1,34], [456,2,3,44,234], [4567,1,4,5,6], [34,78,23,1]]); // [34, 456, 4567, 78]Array.prototype.map () 메소드를 사용하여 외부 배열의 배열을 반복하십시오. 맵 () 메소드를 사용하여 배열을 가로 지르면 콜백 함수가 호출됩니다. 이 콜백 함수에서 각 서브 어레이 그룹은 reture () 메소드를 사용하여 병합되어 값을 새 배열로 반환합니다. Reduce () 메소드를 사용하면 콜백 함수도 호출됩니다. 이 콜백 함수는 한 가지만 수행하며, 이는 서브 어레이의 요소를 비교하는 것입니다. 전류가 이전보다 크면 전류가 반환되고 그렇지 않으면 이전이 반환되고 각 서브 어레이의 최대 값이 얻어집니다.
이전과 마찬가지로 최대 값은 Math.max.apply ()를 통해 마침내 얻습니다.
최상의 솔루션
function bargeoffour (arr) {return arr.map (function.apply.bind (math.max, null));} 최대의 오프 ([[1,34], [456,2,3,44,234], [4567,1,4,5,6], [34,78,23,1]); // [34, 456, 4567, 78]이 체계에서는 function.bind 메소드를 사용하여 Math.max 메소드와 유사한 특수 콜백 함수를 생성하지만 배열을 매개 변수로 가져 오는 기능이 있습니다.
먼저 메인 배열의 각 요소를 반복하십시오. 즉, 배열 내부의 각 하위 배열
Map () 메소드를 사용하려면 콜백 함수가 필요합니다. 각 배열 내에서 최대 값을 찾으십시오. math.max가 입력 배열 작업을 수락 할 수있는 함수를 만들어야합니다. 다시 말해, 이것은 매우 간단하고 Math.max ([9,43,20,6])와 같이 매우 잘 작동합니다. 최대 값 43을 반환합니다
function.prototype.apply 메소드는 배열을 매개 변수로 받아 들일 수 있지만 함수는 호출 컨텍스트를 사용합니다. 이는 약간 복잡합니다. 예를 들어, Math.Max.Apply (NULL, [9,43,20,6])는 Max.Max 메소드를 호출하지만 이러한 방법은 쉽게 찾을 수 없습니다.
여기서는 널 매개 변수가 function.prototype.apply 메소드로 전달됩니다. Math.Max에게 컨텍스트가 필요하지 않다고 말합니다.
arr.map ()는 표현식뿐만 아니라 콜백 함수가 필요하기 때문에 function.bind 메소드에서 함수를 제공합니다.
function.prototype.apply는 함수 객체와 유사한 정적 메소드이므로 function.prototype.bind bound to function.prototype.apply라고 부를 수 있습니다. 예를 들어 : function.Apply.Bind
컨텍스트는 이제 function.prototype.apply.bind 콜백 함수를 통해 지정할 수 있습니다.
function.prototype.apply 메소드에 포함되므로 컨텍스트는 첫 번째 매개 변수로 필요 하며이 컨텍스트는 여전히 거짓입니다.
그래서 우리는 null을 function.prototype.apply.bind 및 바인드, 즉 math.max method입니다.
Math.max는 컨텍스트와 무관하므로 함수의 가짜 컨텍스트를 무시합니다. prototype.apply 메소드 호출
우리는 function.prototype.apply.bind (math.max, null)를 사용하여 새로운 기능을 허용하여 ARR.map 값을 배열에서 하위 배열과 같은 값을 허용합니다.
다차원 배열에서 최대 값을 취하십시오
위의 방법은 다른 방법을 사용하여 2 차원 배열에서 서브 어레이에서 최대 값을 추출하고 이러한 최대 값을 새 배열로 다시 형성합니다. 확장하면 기능에서 Math.max.Apply ({}, this)를 통해 최대 값을 얻으려면 Array.Prototype.Max 함수를 사용해야합니다. 그러나 2 차원 배열이 아닌 경우 위의 방법은 배열에서 가장 큰 값을 검색 할 수 없습니다.
다차원 배열에서 최대 값을 얻으려면 join () 및 split () 메소드와 결합 할 수 있습니다.
함수 BARGEOFFOUR (ARR) {var newArray = arr.join ( ","). split ( ","); return math.max.apply ({}, newArray);} 최대 규모 ([12,23]); // => 23LARGESTOFFOR ([12,23, [1234,324], [345,566]]); // => 1234LARGESTOFFOR ([12,23, [1234,324, [23121,90890]], [345,566, [345,78,90]]); // => 1234LARGESTOFFOR ([12,23, [1234,324, [23121,90890]], [345,566, [345,78,90]]); // => 90890LARGESTOFFOR ([12,23, [1234,324, [23121,90890]], [345,566, [345,78,90, [90909090,988]]]); // => 9090909090또한 유사한 방법을 사용하여 다차원 배열에서 최소값을 제거 할 수 있습니다.
함수 SmallOffour (ARR) {var newArray = arr.join ( ","). split ( ","); return math.min.apply ({}, newArray);} SmallOffour ([12,23]); // => 12Smalleroffour ([112,23, [1234,324], [345,566]]); // => 23SMALLEROFFOUR ([212,123, [1234,324, [23121,90890]], [345,566, [345,78,90]]); // => 23SMALLEROFFOUR ([212,123, [1234,324, [23121,90890]], [345,566, [345,78,90]]); // => 78Smalleroffour ([102,230, [1234,324, [23121,90890]], [345,566, [345,78,90, [90909090,988]]]); // => 78요약
"JavaScript Learning Notes : 배열에서 최대 및 최소 값을 가져 오는"기사에서, Math.Max.Apply ({}, ARR)가 소개되어 배열에서 가장 많은 숫자를 얻습니다. 이 기사는 다른 각도에서 2 차원 배열에서 가장 많은 숫자를 추출하는 방법을 소개하지만, 대부분의 경우 어레이는 다차원 배열도 있습니다. 이 기사는 다차원 배열에서 가장 큰 값을 추출하는 방법을 소개합니다. 더 많은 솔루션이 있으면 의견에서 우리와 공유하십시오.