@bighoc
php/javascript developer

Как удалить елементы массива джаваскрипт сохранив упорядоченность и длину?

У меня есть два массива. Один содержит индексы елементов другого которые нужно удалить:

var array = ['one', 'two', 'tree'];
var toDelete = [1,2];


toDelete содержит ключи от array
То есть я хочу удалить елементы 'two' и 'tree'.
если я в цикле буду обходить toDelete и вызывать splice() например. То на следующеей итерациии я просто буду пробовать удалить елемент с несуществуюющим индексом. Если буду использовать delete то не сохраню length.

Вариант splice(1,2) работает только в этом примере. На деле у меня в массиве toDelete может быть сотня значений. По этому в splice вторым значением всегда будет 1.

Буду благодарен за помощь.
  • Вопрос задан
  • 207 просмотров
Решения вопроса 1
@philipb
js-developer
var a = ['0','1','2','3','4','5'];
var  b = [2,4,5];
a = a.filter(function (el, i) {return !~b.indexOf(i) });
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Обратный цикл
var array = ['one', 'two', 'tree'],
	toDelete = [1, 2];

toDelete.sort();
for (var i = toDelete.length; i--;) {
	array.splice(toDelete[i], 1);
}
Ответ написан
@IceJOKER
Web/Android developer
Первое что пришло в голову:
Объявить еще одну переменную, временный массив.
В цикле проверять , если текущего элемента массива нет в toDelete - добавляем его в новый массив и все )

в концеdelete oldArray;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы