Фильтровать элементы массива с нечетным индексом
Нужно сделать функцию , которая возвращает новый массив, в котором содержатся только те элементы, которые обладали нечетным индексом в массиве, переданном в качестве аргумента. Например:
extractOddItems([0,1,0,1,0,1]); // [1,1,1]
extractOddItems([1,2,3,4,5]); [2, 4]
Вот я реализовал так
// Отфильтровать элементы массива с нечетным индексом
// Реализовать функцию extractOddItems(arr), которая возвращает новый массив, в котором содержатся только те элементы,
// Которые обладали нечетным индексом в массиве, переданном в качестве аргумента. Пример работы:
var a1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]; // [1,1,1]
var a3 = [];
function extractOddItems(a1,a3) {
for (var i = 0; i < a1.length; i++) {
if (i & 1 ) {
}
a1.splice(i,1);
}
return a1;
}
extractOddItems(a1);
Но программа которая проверяет пишет следующее:
Функция изменяет значения аргументов, хотя не должна. Ожидалось, что после вызова такого кода:
var arr1 = [1,2,3,4,5,6,7,8, [], {}];
var oddArr1Items = extractOddItems(arr1);
В переменной arr1 массив не изменится, и останется таким:
[1,2,3,4,5,6,7,8, [], {}]
Не могу врубить как сделать так как она хочет
Источник: Stack Overflow на русском