Задать вопрос
@pashkevich-d

Как узнать индексы трех самых больших значений массива?

Всем привет! Подскажите плиз, как можно получить индексы трех самых больших значений массива? Массив из цифр.
Буду потом по этим индексам брать значения из другого массива и сопоставлять их, так что нужны не значения, а именно индексы. Заранее благодарен.
  • Вопрос задан
  • 912 просмотров
Подписаться 1 Простой 5 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию + ИИ
    6 месяцев
    Далее
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
const getMaxIndexes = (arr, count) => Object
  .entries(arr.reduce((acc, n, i) => ((acc[n] = acc[n] ?? []).push(i), acc), {}))
  .sort((a, b) => b[0] - a[0])
  .flatMap(n => n[1])
  .slice(0, count);
Ответ написан
@dimoff66
Кратко о себе: Я есть
Самое оптимальное по скорости решение без сортировки всего массива

const getTopIndexes = (arr, count) => {
  return arr.reduce((topIndexes, v, i, arr) => {
     let insertIndex = topIndexes.length
     for (let ind = topIndexes.length - 1; ind >= 0; ind --) 
       if (v > arr[topIndexes[ind]]) insertIndex = ind 
       else break
     
     topIndexes.splice(insertIndex, 0, i)
     return topIndexes.slice(0, count)
  }, [])
}
  
console.log(getTopIndexes([-7, 2, 7, 5, 1, 4, -5, 7], 3)) // 2, 7, 3
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Tim-A-2020
@Tim-A-2020
let sort = [7,6000, 1, 56, 40, 300].sort((a,b) => a - b)
let arrMax = sort.slice(-3);
let indexArr = sort.map((item , i) => arrMax.includes(item) ? i : null).filter(n => n);
console.log(sort[indexArr[2]])
Ответ написан
Комментировать
const count = 3;
const arr = [ 1, 10000, 0, 500, -50, 300 ];
const maxThreeNumbers = [ ...arr ].sort((a, b) => b - a).slice(0, count);

const result = maxThreeNumbers.reduce((acc, n) => (acc.push(arr.indexOf(n)), acc), []);
console.log(result);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы