Как удалить элемент [i] из элементов, когда он достигает:
$.each(items, function(i) {
// how to remove this from items
});
Как удалить элемент [i] из элементов, когда он достигает:
$.each(items, function(i) {
// how to remove this from items
});
Если вы хотите удалить элемент из массива, используйте splice()
var myArray =['a','b','c','d'];
var indexToRemove = 1;
// first argument below is the index to remove at,
//second argument is num of elements to remove
myArray.splice(indexToRemove , 1);
myArray
теперь будет содержать ['a','c','d']
Лучше не использовать $.each
в этом случае. Вместо этого используйте $.grep
. Этот цикл проходит через массив примерно так же, как и $.each
с одним исключением. Если вы возвращаете true
из обратного вызова, элемент сохраняется. В противном случае он удаляется из массива.
Ваш код должен выглядеть примерно так:
items = $.grep(items, function (el, i) {
if (i === 5) { // or whatever
return false;
}
// do your normal code on el
return true; // keep the element in the array
});
Еще одно примечание: this
в контексте обратного вызова $.grep
установлено на window
, а не на элемент массива.
Я предполагаю, что вы хотите $.map
. Вы можете return null
удалить элемент и не беспокоиться о том, как индексы могут меняться:
items = $.map(items, function (item, index) {
if (index < 10) return null; // Removes the first 10 elements;
return item;
});
Что-то вроде
var indexToBeRemoved = 3; // just an illustration
$.each(items, function(i) {
if(i==indexToBeRemoved){
$(this).remove();
}
});
решение ниже:
_.each(data, function (item, queue) {
if (somecondition) {
delete data[queue]
}
});
Как упоминалось выше @lonesomday (я просто не мог добавить это в комментарий) grep
для массивов, но вы можете вставить свой селектор внутри grep
:
var items = $.grep($(".myselector", function (el, i) {
return (i===5) ? false : true;
};
Это сохранит все найденные элементы, используя $(".myselector")
в "темах", оставляя элемент на 6-й позиции (список индексируется 0, что делает "5" 6-м элементом)