Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.10.2017, 22:59   #1
Obolensk
 
Регистрация: 02.05.2017
Сообщений: 7
По умолчанию Минимальное значение многомерного массива

Всем привет.
Заранее прошу прощения за, возможно, глупый вопрос, я совсем начинающий постигать азы JavaScript.
Столкнулся с такой задачей, как найти минимальное значение в массиве массивов.
Минимальное значение обычного одномерного массива нашел с помощью Math.min.apply(null,test) и индекс его нашел конечно тоже, а вот на многомерном застрял.
Есть, например, такой массив:
[[2, 7, 2],
[2, 5, 4],
[2, 1, 5],
[3, 1, 2]];
Как найти его минимальное значение и его индекс?
Obolensk вне форума Ответить с цитированием
Старый 10.10.2017, 10:18   #2
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

ну, если ты знаешь что делает Math.min.apply(null,test), то очевидно и это поймешь:
Код:
Math.min.apply(null,Array.prototype.concat.apply([],test))
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 10.10.2017, 11:30   #3
Obolensk
 
Регистрация: 02.05.2017
Сообщений: 7
По умолчанию

Добрый день, да, спасибо, всё работает.
Минимально значение в итоге нашли, например, таким образом:

var x, y;
let min = [
[2, 7, 2],
[2, 5, 4],
[2, 1, 5],
[3, 1, 2]
].reduce(mySearch, Infinity)


Код:
function mySearch (acc, subArray, index) {
let min = Math.min(...subArray)
if (min < acc) {
x = index
y = subArray.indexOf(min)
return min
}
return acc
}

console.log(`x: ${x}, y: ${y}, value: ${min}`)
Дальше надо определить минимальное значение из соседних значений (справа/слева и сверху/снизу, кроме диагоналей) и увеличить первое значение до второго?
И так далее до "края" массива. После чего необходимо вернуть сумму всех добавленных значений.
Например, массив:
4 5 4
3 1 5
5 4 4
преобразуем в
4 5 4
3 3 5
5 4 4
т.к. добавили к минимальному значению в центре двойку, таким образом итоговый возвращаемый ответ - 2.
А, например, массив:
5 3 4 5
6 2 1 4
3 1 1 4
8 5 4 3
Ответом будет 7, т.к. добавили всего 7 чтобы привести к тройке три единицы посередине массива и двойку.
А вот массив:
2 2 2
2 1 2
2 1 2
2 1 2
Возвращаем ноль, т.к. минимальное значение - единица - и так уже "упирается" в "край" массива и добавлять ничего уже не нужно.
В общем логика такая.
Если кто-то сможет помочь, буду бесконечно признателен.

Последний раз редактировалось Вадим Мошев; 06.11.2017 в 01:23.
Obolensk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
F# Минимальное и максимальное значение массива в кортеж Sega_AS Помощь студентам 1 29.03.2013 14:53
Минимальное значение массива Sweet-_-Orange Помощь студентам 7 12.02.2012 22:59
..=( Функции и минимальное значение массива amidatong Паскаль, Turbo Pascal, PascalABC.NET 3 14.03.2011 19:08
Вывести на экран минимальное значение среди составных чисел массива. dorofei Помощь студентам 33 24.05.2009 20:42