Home » Javascript » Remove item[i] from jQuery each loop

Remove item[i] from jQuery each loop

Posted by: admin February 12, 2018 Leave a comment

Questions:

How do I remove an item[i] from items once it reaches in:

$.each(items, function(i) {
    // how to remove this from items
});
Answers:

If you want to remove an element from array, use 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 will now contain ['a','c','d']

Questions:
Answers:

It would be better not to use $.each in this case. Use $.grep instead. This loops through an array in pretty much the same way as $.each with one exception. If you return true from the callback, the element is retained. Otherwise, it is removed from the array.

Your code should look something like this:

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
});

One more note: this in the context of a $.grep callback is set to window, not to the array element.

Questions:
Answers:

I’m guessing you want $.map. You can return null to remove an item, and not worry about how indices might shift:

items = $.map(items, function (item, index) {
    if (index < 10) return null; // Removes the first 10 elements;
    return item;
});

Questions:
Answers:

Something like

var indexToBeRemoved = 3; // just an illustration
$.each(items, function(i) {
    if(i==indexToBeRemoved){
        $(this).remove();
    }
});

Questions:
Answers:

the solution is below:

_.each(data, function (item, queue) {
    if (somecondition) {
        delete data[queue]
    }
});

Questions:
Answers:

As mentioned by @lonesomday above (I simply couldn’t add this in a comment) grep is for Arrays, but you could insert your selector inside grep:

var items = $.grep($(".myselector", function (el, i) {
  return (i===5) ? false : true;
};

This would store all elements found using $(".myselector")in ìtems` leaving out the item at the 6th position (the list is 0 indexed, which makes “5” the 6th element)