You could use built-in functions (links : splice, pop, shift) :
var a = [1, 2, 3, 4, 5, 6];
a.splice(1, 1); // [2] a -> [1, 3, 4, 5, 6]
a.splice(1, 2); // [3, 4] a -> [1, 5, 6]
a.pop(); // 6 a -> [1, 5]
a.shift(); // 1 a -> [5]
Or create your own functions to check some criteria :
// returns the removed element
function removeFirst(array, fn) {
var i = 0;
while (i < array.length) {
if (fn(array[i]) !== true) i++;
else return array.splice(i, 1)[0];
}
}
// returns an array containing the removed elements
function removeAll(array, fn) {
var i = 0, removed = [];
while (i < array.length) {
if (fn(array[i]) !== true) i++;
else removed.push(array.splice(i, 1)[0]);
}
return removed;
}
Usage examples :
var array = [
{ name: 'one', value: 11 },
{ name: 'one', value: 1 },
{ name: 'two', value: 2 },
{ name: 'three', value: 3 },
{ name: 'four', value: 4 }
];
// removed -> { name: 'one', value: 1 }
var removed = removeFirst(array, function (item) {
return item.name === 'one' && item.value === 1;
});
// removed -> [{ name: 'two', value: 2 }, { name: 'three', value: 3 }]
var removed = removeAll(array, function (item) {
return item.name.charAt(0) === 't';
});
// array -> [{ name: 'one', value: 11 }, { name: 'four', value: 4 }]