@SeventimeSsS

Как перебрать массив с элементами и при отличии первой буквы элемента с первой буквой следующего элемента добавлять эту букву перед элементом?

Есть массив:

const arr = [
{code: 1, name: 'Адыгея, Респ.', capital: 'Майкоп'},
{code: 104, name: 'Азербайджан', capital: ''},
{code: 4, name: 'Алтай, Респ.', capital: 'Горно-Алтайск'},
{code: 2, name: 'Башкортостан, Респ.', capital: 'Уфа'},
{code: 105, name: 'Беларусь', capital: ''},
{code: 31, name: 'Белгородская обл.', capital: 'Белгород'},
{code: 33, name: 'Владимирская обл.', capital: 'Владимир',},
{code: 34, name: 'Волгоградская обл.', capital: 'Волгоград',},
{code: 5, name: 'Дагестан, Респ.', capital: 'Махачкала'}]

Нужно создать цикл и сравнить элементы с друг другом и если будет сравниваться названия Алтай и Башкортостан, он будет добавлять в массив перед этим элементов его первую букву то есть Б.

По итогу он должен будет выглядеть так:

const arr2 = [
{name: 'A'}
{code: 1, name: 'Адыгея, Респ.', capital: 'Майкоп'}
{code: 104, name: 'Азербайджан', capital: ''}
{code: 4, name: 'Алтай, Респ.', capital: 'Горно-Алтайск'}
{name: 'Б'}
{code: 2, name: 'Башкортостан, Респ.', capital: 'Уфа'}
{code: 105, name: 'Беларусь', capital: ''}
{code: 31, name: 'Белгородская обл.', capital: 'Белгород'}
{name: 'В'}
{code: 33, name: 'Владимирская обл.', capital: 'Владимир',}
{code: 34, name: 'Волгоградская обл.', capital: 'Волгоград',}
{name: 'Д'}
{code: 5, name: 'Дагестан, Респ.', capital: 'Махачкала'}]
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
arr.reduce((acc, n, i, a) => (
  a[i - 1]?.name[0] !== n.name[0] && acc.push({ name: n.name[0] }),
  acc.push(n),
  acc
), [])

или

arr.flatMap((n, i, a) =>
  i && a[~-i].name[0] === n.name[0]
    ? n
    : [ { name: n.name[0] }, n ]
)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
21 нояб. 2024, в 22:21
3000 руб./в час
21 нояб. 2024, в 21:42
100000 руб./за проект
21 нояб. 2024, в 21:30
500 руб./за проект