Вставка элемента по типу (Insert Item By Type)
3
Массивы
Группировка
Условие:
Дан массив элементов, где каждый элемент — объект с полями type (строка) и value (строка). Элементы одного и того же type в массиве расположены подряд (сгруппированы), в порядке появления групп.
Нужно вставить новый элемент в массив так, чтобы внутри своей группы (среди элементов с тем же type) он оказался на позиции, заданной третьим аргументом — это индекс внутри группы, а не индекс во всём массиве.
Если позиция отрицательная — элемент должен стать первым в своей группе. Если позиция больше или равна количеству элементов этого типа — элемент должен стать последним в своей группе. Гарантируется, что хотя бы один элемент с таким же type, как у вставляемого, уже есть в массиве.
Функция возвращает новый массив с учётом вставки.
Входные данные:
items— массив объектов{ type: string, value: string }, от 1 до 1000 элементов, элементы одногоtypeидут подрядnewItem— объект{ type: string, value: string }для вставкиposition— целое число, индекс внутри группы своего типа (может быть отрицательным или больше размера группы)
Выходные данные:
Массив объектов { type: string, value: string } — исходный массив с вставленным элементом.
Ограничения:
1 <= items.length <= 1000в
itemsуже есть хотя бы один элемент сtype, равнымnewItem.typeposition— любое целое число
Пример:
Вход: items = [{type:"A",value:"1"}, {type:"B",value:"1"}, {type:"A",value:"2"}, {type:"B",value:"2"}], newItem = {type:"A",value:"new"}, position = 1
Выход: [{type:"A",value:"1"}, {type:"A",value:"new"}, {type:"B",value:"1"}, {type:"A",value:"2"}, {type:"B",value:"2"}]