Если найдено несколько наибольших отрицательных элементов в массиве - найти элемент с наименьшим индексом

В задании требуется:

Найти в массиве наибольший элемент среди отрицательных и его индекс. Если таких элементов несколько, найдите элемент с наименьшим индексом

У меня был код, который находил из интервала чисел 15-20 все максимальные элементы и их индексы(в массивы MZ и Indexes заносились макс элементы и их индекс после проверки)

A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

            for (i=0; i<A.length; i++)
            {
                //С таким синтаксисом random мы получаем целое случ число
                A[i] = Math.floor(Math.random() * (20 - 15 + 1)) + 15       
                
            }
            console.log("Массив = "+A)
            

            Max = 0
             
            MZ = []
 
            Indexes = [-1]
 
            for ( i = 0; i < A.length; i++)
            {
            if (A[i] > Max)
            {
            Max = A[i]
            
            Indexes.length = 0
            Indexes.push(i)  
            MZ.length = 0
            MZ.push(Max)
            }
            else
            {
            if (A[i] == Max) {MZ.push(Max); Indexes.push(i);}
            }   
            }
            console.log ('Максимальные элементы ' +MZ)
            console.log ('Их индексы ' +Indexes)

Решил переделать под этот случай и добавил проверку длины массива Index(можно и MinZ) , где если больше одного макс числа - идет проверка на наибольший индекс, но после внедрения условия for ( i = 0; i < Index.length; i++) код перестал запускаться. Полный код программы(хотелось бы исправить ошибку, а не переписывать с нуля):

M= prompt('Ввести массив с отрицательными элементами: ')
                Array.from(M) // Cоздаёт Array из массивоподобного или итерируемого объекта
                alert ('Массив ' +M)        
                
                Most = 0
             
                MinZ = []
 
                Index = [-1]
 
                for ( i = 0; i < M.length; i++)
                {
                if (M[i] > Most) 
                {
                Most = M[i]
            
                Index.length = 0 
                Index.push(i)  
                MinZ.length = 0
                MinZ.push(Most)
                }
                else
                {
                if (M[i] == Most) {MinZ.push(Most); Index.push(i) }
                }   
                }
                
                if (Index.length > 1)
                {
                Mznach = 0
                MIndex = Index[i]
                for ( i = 0; i < Index.length; i++) 
                {
                if (MIndex > Index[i])
                {Mznach = MinZ; MIndex = Index[i]}
                
                console.log ('Наибольший среди отрицательных элемент ' +Mznach)
                console.log ('Его индекс ' +MIndex)
                
                }
                }
                else
                {
                console.log ('Наибольший среди отрицательных элемент ' +MinZ)
                console.log ('Его индекс ' +Index)
                }


Ответы (1 шт):

Автор решения: Zhihar

зачем такие гробы?

  1. искомый элемент равен 0 элементу, искомый индекс равен 0

  2. пройти по всем элементам массива

  3. если элемент меньше 0 и больше максимального элемента - считать текущий элемент искомым, текущий индекс - искомым

  4. после прохода по массиву проверить удовлетворяет ли найденный элемент нужным критериям (меньше 0) - если да - выдать искомый индекс, если нет - написать что элементов найдено не было

итого задача на 4 строчки

→ Ссылка