@kristenstewartdadada
Frontend Developer

Как удалить все четные элементы массива?

Подскажите что делаю не так? Нужно удалить все четные элементы массива, но при удалении индексы сдвигаются, как быть?

var arr = ['а','б','в','г', 'д'];

for (var i = 0; i <= arr.length; i++) {
   if (i % 2 == 1) {
          arr.splice(i,1);
      }
 }
  • Вопрос задан
  • 8260 просмотров
Решения вопроса 3
Stalker_RED
@Stalker_RED
var result = arr.filter((e,i)=>!(i%2))
https://jsfiddle.net/h0tj0mmL/
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
двигаться справа налево:
var i, arr = ['а','б','в','г','д'];

for( i = arr.length - 1; i >= 0; i--) if( i % 2 === 1) arr.splice(i,1);
// а,в,д
Ответ написан
@nhzch
В чем проблема непонятно? Сдвиг сплайса всегда на единицу:
m-массив, n-число элементов

for(i=0;i<n/2;i++) m.splice(i,1);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@sweet_coder
Эльфийский маг баговой отрасли.
arr = arr.filter(item => arr.indexOf(item) % 2 === 0);
Ответ написан
devellopah
@devellopah
если императивно, то так
function isEven(num) {
 	return num % 2 === 0;
 }
 
function dropEvenElems(list) {
	var result = [], 
			len = list.length, i;
	
	for (i = 0; i < len; i += 1) {
		isEven(i) && result.push(list[i]);
	}
	
	return result;
}

var arr = ['а','б','в','г', 'д'];

dropEvenElems(arr);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы