@zakharoffam
Начинающий

Как отобрать «пиковые» значения в массиве?

Здравствуйте.

Есть массив, примерно такой:
const arr = [
'',
'aaa',
'aaaaa',
'aaaaaa',
'aaaaa',
'aaaa',
'b',
'bb',
'b',
'c',
'cc',
'ccc',
'cccc',
'cc,
]

Как в нем можно отобрать "пиковые" строки, т.е. 'aaaaaa', 'bb', 'cccc'.
Делаю вот так:
const arr2 = arr.ruduce((a, b) => a.length > b.length ? a : b)

Но таким способом отбирается только самый длинный элемент. А мне нужно именно "пики".
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Object.values(arr.reduce((acc, n) => {
  if (n) {
    const k = n[0];
    acc[k] = acc[k]?.length > n.length ? acc[k] : n;
  }

  return acc;
}, {}))

UPD. Чего на самом деле надо было:

"пик" это элемент массива с длиной больше чем предыдущий элемент и следующий

arr.filter((n, i, a) => a[i - 1]?.length < n.length && n.length > a[i + 1]?.length)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы