Текст и пример противоречат друг другу: a, c, e, g имеют чётные индексы. Сожмите массив двумя указателями; параметр parity определяет, какие исходные индексы сохранить.
Извлечение элементов с нечётными индексами без создания новых массивов
Текст и пример противоречат друг другу: a, c, e, g имеют чётные индексы. Сожмите массив двумя указателями; параметр parity определяет, какие исходные индексы сохранить.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо получить из массива только те элементы, которые находятся на нечётных позициях (по индексу, начиная с 0), при этом изменяя исходный массив — дополнительные массивы создавать нельзя.
const data = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
console.log(evenIndexElements); // ['a', 'c', 'e', 'g']
Ответ
Текст и пример противоречат друг другу: a, c, e, g имеют чётные индексы. Сожмите массив двумя указателями; параметр parity определяет, какие исходные индексы сохранить.
function keepIndexParity(array, parity = 0) {
let write = 0;
for (let read = parity; read < array.length; read += 2) {
array[write++] = array[read];
}
array.length = write;
return array;
}
Для приведённого результата используйте parity = 0, для нечётных индексов из текста — parity = 1. Допускаются только эти два значения. Запись всегда идёт не правее чтения, поэтому ещё не обработанные элементы не затираются. Время O(n), дополнительная память O(1), меняется именно исходный плотный массив.