Логотип YeaHub

Вставка элемента по типу (Insert Item By Type)

3

GoJavaJavaScriptPython

Массивы

Группировка

Яндекс

Условие:

Дан массив элементов, где каждый элемент — объект с полями 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.type

  • position — любое целое число

Пример:

Вход: 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"}]

Loading...