Проверяет умение вставлять элемент в массив с сохранением относительного порядка элементов разных типов, что важно при работе с сортированными или типизированными коллекциями.
Задача возникает, когда массив содержит элементы разных типов, и нужно вставить новый элемент так, чтобы он оказался в правильной позиции среди элементов своего типа, не сдвигая элементы других типов относительно друг друга. Например, есть массив чисел и строк, и нужно вставить число так, чтобы все числа остались в исходном порядке, а строки не перемешались.
splice.Если требуется сохранить сортировку внутри типа, то позиция вставки определяется сравнением с элементами того же типа. Если просто нужно сгруппировать элементы по типам, сохраняя их относительный порядок, то вставка происходит после последнего элемента того же типа.
function insertByType(arr, newItem) {
const type = typeof newItem;
let insertIndex = arr.length;
for (let i = 0; i < arr.length; i++) {
if (typeof arr[i] === type) {
// если нужна сортировка внутри типа, сравниваем
if (arr[i] > newItem) {
insertIndex = i;
break;
}
insertIndex = i + 1;
}
}
arr.splice(insertIndex, 0, newItem);
return arr;
}
const arr = [1, 'a', 3, 'b', 5];
insertByType(arr, 4);
console.log(arr); // [1, 'a', 3, 4, 'b', 5]
В примере число 4 вставляется после числа 3, но перед строкой 'b', сохраняя порядок строк и чисел.
Итог: метод полезен, когда нужно вставить элемент в массив с учётом типа, не нарушая относительный порядок других типов. Это особенно актуально для поддержания стабильности данных при динамическом обновлении коллекций.