В JavaScript вы можете использовать встроенное максимальное значение math.max (), но все еще трудно извлечь максимальное значение из нескольких массивов.
Описание проблемы
Предположим, у вас есть массив, и этот массив содержит подзаррей чисел, и то, что мы хотим сделать, это вернуть свое наибольшее максимальное число из каждого субрай в массиве.
Основное решение
Функция FUNTIONFOFFOUR (arr) {var results = []; // Создать результат переменную для хранения // Создать внешний цикл, чтобы пройти внешний массив для (var n = 0; n <arr.length; n ++) {var largenumber = 0; // Создать вторую переменную для хранения наибольшего числа // Создать еще один цикл для прохождения subarray for (var sb = 0; sb <arr [n] .length; sb ++) {// Проверьте, является ли элемент subarray больше, чем ток максимально сохраняемое значение, если (ar [n] [sb]> largenumber) {// if, если истинно присваивает это значение, если (rar [n]>> largenumber). arr [n] [sb];}} // После внутреннего цикла сохранение значения в каждом субрайе к результатам результатов массива [n] = largenumber;} // Результаты возврата массива;} Наибольшее количество ([[1,34], [456,2,3,44,234], [45677,1,5,5,6]; // [34, 456, 4567, 78]Вышеуказанный метод представляет собой нормальное решение, проходящее массив и его субарры через два для петли:
Создайте переменную результатов для хранения максимального значения, проходящего в каждом субраре
Создайте внешнюю петлю для пересечения внешних массивов
Создайте вторую переменную, Largenumber, чтобы сохранить максимальное значение. Это значение переменного должно быть помещено вне внутреннего для цикла, потому что оно не будет переназначено
Создайте секунду для цикла, чтобы итерация через каждый элемент в Subarray
Оператор IF используется для определения того, превышает ли элемент текущего субаррея, чем максимальное значение, хранящееся в текущем субраре. Если это правда, сохраните это максимальное значение для Largenumber.
После завершения внутреннего цикла максимальное значение в каждом субраре сохраняется в первоначально объявленных результатах переменных
Наконец -то вернуть массив результатов
После того, как вы получите каждое максимальное значение во всех Subarrays, вы получите новые результаты массива. В настоящее время вам нужно только пройти:
Array.prototype.max = function () {return math.max.apply ({}, this);} losgestoffour (arr) .max ();Вы можете получить максимальное значение.
ForgeOffour ([[1,34], [456,2,3,44,234], [4567,1,4,5,6], [34,78,23,1]]). Макс (); // 4567
Промежуточное решение
Функция funtoffour (arr) {// Использовать метод map () и функция обратного вызова для объединения максимальных значений в субраре вместе для получения нового массива return arr.map (function (группа) {// Использовать метод уменьшения для возврата максимального значения в каждом субраре в группу групповой массивы. prev;});});});} laggestoffour ([[1,34], [456,2,3,44,234], [4567,1,4,5,6], [34,78,23,1]]]); // [34, 456, 4567, 78]Используйте метод Array.prototype.map () для итерации через массив во внешнем массиве. Используйте метод Map () для прохождения массива, и будет вызвана функция обратного вызова. В этой функции обратного вызова каждая группа Subarray объединяется с использованием метода Reduct () для возврата значения в новый массив. При использовании метода Reduct () также будет вызвана функция обратного вызова. Эта функция обратного вызова делает только одну вещь, которая заключается в сравнении элементов в Subarray. Если ток превышает Prev, то ток будет возвращен, в противном случае будет возвращено Prev, и будет получено максимальное значение в каждом субраре.
Как и прежде, максимальное значение наконец -то получается через Math.max.apply ().
Лучшее решение
Функция funtoffour (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, но имеет функцию function.prototype.apply, которая принимает массив в качестве параметра.
Сначала итерация над каждым элементом в основном массиве, то есть каждый субрай внутри массива
Использование метода Map () требует функции обратного вызова, чтобы найти максимальное значение в каждом массиве внутри. Вам необходимо создать функцию, которая позволяет Math.max принять работу ввода массива. Другими словами, это очень просто и работает очень хорошо, например, Math.max ([9,43,20,6]); вернет максимальное значение 43
Метод функции. Например, Math.max.Apply (null, [9,43,20,6]) вызовет метод Max.Max, но такой метод нелегко найти.
Здесь нулевой параметр передается в функцию.
Поскольку arr.map () требует функции обратного вызова, а не только выражения, мы предоставляем функцию в методе функции.
Поскольку function.prototype.apply является статическим методом, аналогичным функциональному объекту, мы можем назвать его function.prototype.bind, связанный с function.prototype.apply. Например: function.apply.bind
Его контекст теперь может быть указан через функцию function.prototype.apply.bind Function, такая как метод math.max в этом примере
Поскольку он встроен в функцию. Прототип.
Таким образом, мы передаем NULL в качестве второго параметра к function.prototype.apply.bind и связываем контекст, который является методом Math.max
Поскольку math.max не зависит от любого контекста, он игнорирует поддельный контекст функции.
Мы используем function.prototype.apply.bind (math.max, null), чтобы сделать новую функцию принять значение Arr.map, например, Subarray в массиве
Возьмите максимальное значение в многомерном массиве
Выше приведены различные методы для извлечения максимальных значений из Subarray из двумерного массива и повторно формировать эти максимальные значения в новый массив. Если вы расширяете его, вам также необходимо использовать функцию array.prototype.max для получения максимального значения через math.max.apply ({}, это) в функции. Однако, если это не двумерный массив, вышеупомянутый метод не сможет получить наибольшее значение в массиве.
Чтобы получить максимальное значение в многомерном массиве, вы можете объединить его с методами join () и split ():
function functoffour (arr) {var newarray = arr.join (","). Split (","); return Math.max.Apply ({}, Newarray);} aStOffour ([12,23]); // => 23largestoffour ([12,23, [1234,324], [345,566]]); // => 1234largestoffour ([12,23, [1234,324, [23121,90890]], [345,566, [345,78,90]]]); // => 1234largestoffour ([12,23, [1234,324, [23121,90890]], [345,566, [345,78,90]]]); // => 90890largestoffour ([12,23, [1234,324, [23121,90890], [345,566, [345,78,90, [90909090,988]]]]]); // => 9090909090Вы также можете использовать аналогичный метод, чтобы удалить минимальное значение в многомерном массиве:
Функция flomeRoffour (arr) {var newarray = arr.join (","). split (","); return math.min.apply ({}, newarray);} flomeRoffour ([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: вводятся максимальные и минимальные значения в массивах», Math.max.Apply ({}, ARR), введено, чтобы получить наибольшее число в массиве. В этой статье представлено, как извлечь наибольшее число из двумерного массива с разных сторон, но во многих случаях массивы также имеют многомерные массивы. В итоге статья представляет, как извлечь наибольшее значение из многомерного массива. Если у вас есть больше решений, пожалуйста, поделитесь ими с нами в комментариях.