Генератор favicon   •   Online-инструменты
325 просм
0 комм
Поделиться:

Находим наибольшее и наименьшее значение массива на PHP/JavaScript

Массивы – одно из удобных структурированных способов хранения информации. Каждый элемент такого массива имеет свое место, свой ключ и значение. Содержание же массивов может быть разным, как, например, база номеров, названий или же простых числовых значений. Говоря о числе, перед нами могут вставать разного рода задачи, например, вывод максимального или минимального значения. О том, как это решается на разных языках программирования, сегодня и пойдет речь.

Находим наибольшее и наименьшее значение одномерного массива на PHP

Все массивы различаются по своей структуре. Рассмотрим два простых одномерных массива, один из которых не содержит в себе ключей:

$my_array = array(22, 24, 37, 74, 23, 2, 10);

и один, идентичный предыдущему, но уже с ключами:

$my_array = array(
	1 => 22,
	2 => 24,
	3 => 37,
	4 => 74,
	5 => 23,
	6 => 2,
	7 => 10
);

Постараемся вывести максимальное и минимальное значение этого массива. Для этого мы воспользуемся стандартными функциями «max» и «min» соответственно:

echo max($my_array); // Выведем 74
echo min($my_array); // Выведем 2

Если мы рассмотрим более подробно второй массив, то в качестве результата мы можем получить ключ максимального или минимального значений.

На примере массива

$my_array = array(
	1 => 22,
	2 => 24,
	3 => 37,
	4 => 74,
	5 => 23,
	6 => 2,
	7 => 10
);

это будет выглядеть следующим образом:

$max = array_keys($my_array, max($my_array));
$max = $max[0];// Ключ максимального значения

$min = array_keys($my_array, min($my_array));
$min = $min[0]; // Ключ минимального значения

echo $max; // Выведем результат максимального значения

Соответственно, ключ максимального значения – это «4», а минимального – «6».

Находим наибольшее и наименьшее значение многомерного массива на PHP

Многомерные массивы отличаются своей вложенностью. Например, двумерный массив будет выглядеть следующим образом без ключей:

$my_array = array(
	array(22, 24, 37),
	array(74, 23, 2),
	array(10)
);

И, соответственно, с некими ключами:

$my_array = array(
	array(
		1 => 22,
		2 => 24,
		3 => 37
	),
	
	array(
		4 => 74,
		5 => 23,
		6 => 2
	),
	
	array(
		7 => 10
	)
);

В таком случае нахождение максимальных и минимальных значений немного затруднительно, но так же реально.

Для начала, чтобы здесь найти максимум и минимум, преобразуем массив в одномерный:

$out_array = array();

foreach($my_array as $sub_array) {
	
	$out_array = array_merge($out_array, $sub_array);
	
}

Конструкция работает для обоих вариантов выше. И далее, по примеру одномерного массива, выведем нужные нам данные:

echo max($out_array); // Выведем 74
echo min($out_array); // Выведем 2

В качестве небольшого бонуса приведу пример еще одного популярного двумерного массива:

$my_array = array(
	array(
		'id' => '1',
		'date' => '2018-03-19',
		'price' => '5',
	),
	
	array (
		'id' => '2',
		'date' => '2018-03-19',
		'price' => '50',
	),
	
	array (
		'id' => '3',
		'date' => '2018-03-19',
		'price' => '25',
	)
);

Под популярностью я подразумеваю не содержание, а пример его структуры. Допустим, что здесь вам необходимо сделать вывод максимального и минимального значения только ключей «price».

Первое, что вам нужно в таком случае – получить новый массив только с этими данными:

$numbers = array_column($my_array, 'price');

И дальше по примеру того же одномерного массива выводим максимум и минимум:

echo min($numbers); // Выведем 5
echo max($numbers); // Выведем 50

На этом работа с массивами на PHP закончена. Если вдруг структура вашего массива отличается и вы не знаете, как его обработать – задайте соответствующий вопрос в комментариях, постараюсь вам помочь.

Находим наибольшее и наименьшее значение одномерного массива на JavaScript

В отличие от PHP, в JavaScript вид массивов куда проще, и простой одномерный массив будет выглядеть следующим образом:

var my_array = [22, 24, 37, 74, 23, 2, 10];

Индексы здесь никакие не указываются. Для того чтобы найти в этом массиве максимальное и минимальное значение, напишем две своих простеньких функции:

function arrayMax(array) {
	
	return array.reduce(function(a, b) {
	
		return Math.max(a, b);
		
	});
	
}

function arrayMin(array) {
	
	return array.reduce(function(a, b) {
		
		return Math.min(a, b);
	
	});
	
}

которые используются для нахождения нужных нам значений. Использование также простое:

alert(arrayMax(my_array)); // Выведем 74
alert(arrayMin(my_array)); // Выведем 2

В этом случае на экран выведутся числа «2» и «74» как минимальное и максимальное значение массива.

Находим наибольшее и наименьшее значение многомерного массива на JavaScript

Многомерные массивы в JavaScript так же просты, и выглядят они следующим образом:

var my_array = [
	[22, 24, 37],
	[74, 23, 2],
	[10]
];

Давайте попробуем здесь найти максимум и минимум. Для начала мы напишем функцию, с помощью которой по привычной уже нам схеме представим этот массив как одномерный:

var out_array = [];

my_array.forEach(function(v) {
  
	Array.prototype.push.apply(out_array, v);
  
});

И с помощью объекта «Math» получим нужные нам значения:

var min = Math.min.apply(null, out_array); // Получим 2
var max = Math.max.apply(null, out_array); // Получим 74

alert(max); // Выведем 74 на экран

На самом деле вместо объекта «Math» можно использовать наши функции, используемые в варианте с одномерным массивом, но чтобы вы понимали, что любую задачу можно решить несколькими способами – здесь я привел немного другое решение.

Ну и по традиции – небольшой бонус. Рассмотрим еще один многомерный массив с такой структурой:

var my_array = [
	['Один', '2018-03-19', 5],
	['Два', '2018-03-19', 50],
	['Три', '2018-03-19', 25],
];

Как мы видим, числовые значения в каждом массиве находятся на третьем месте. Давайте напишем код и получим соответствующие значения только из этих данных:

var min = +Infinity;
var max = -Infinity;

my_array.forEach(function(item) {
	
	if(+item[2] < min) {
		min =+ item[2]; // Ищем минимальное значение
	}
	
});


my_array.forEach(function(item) {

	if(+item[2] > max) {
		
		max =+ item[2]; // Ищем максимальное значение
		
	}
	
});

alert(min+' '+max); // Выводим результат на экран

На этом все. Не забывайте поддерживать проект. Впереди вас ждет много всего интересного!

0
комментарий
Оставить комментарий:
Нажимая кнопку «Отправить» вы даете согласие на обработку своих персональных данных.
Ваше Имя
Ваш E-mail
Текст комментария