Задать вопрос
Andrello
@Andrello

Как реализовать удаление элементов массива JS?

В массиве [] необходимо удалить элементы с индексами "!" "." "?"
Иду по массиву в цикле:

for (var i = 0; i < arr.length; i++) {
                  if (arr[i]===("." || "!" || "?")) {arr.splice(i,1)}
             }


Вроде просто, всяко пробовал, не катит.
  • Вопрос задан
  • 14842 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@aplic
У вас удаление приводит к сдвигу значений в массиве, то есть вы удаляете через один элемент. В таком случае принято обходить элементы в обратном порядке.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@alexandrpopovweb
var arr = ["a", "b", "c", "d"];
// удаляем "с"
delete arr[arr.indexOf("c")];

// так тоже будет работать :)
var arr = ["с", "b", "g", "d"];
delete arr[arr.indexOf("c")];
Ответ написан
Комментировать
Конечно не катит, потому что вы значения проверяете. [] - это список, а не ассоциативный массив с индексами. Индексами, как вы говорите, могут выступать свойства объектов. {}

var data = {".": 1, "1": 2},
      bad_keys = {"." : 1, "!": 1, "?" : 1},
      key;

for(key in data){
	if(data.hasOwnProperty(key) && bad_keys[key]) {
		delete data[key];
	}
}
console.dir(data);
Ответ написан
Ваш ответ на вопрос

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

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