Вероятно, пропустить add
дороже, чем просто добавить все и удалить объект впоследствии.
Вы также можете работать с косвенным обращением: каждый объект «знает» свой индекс в массиве.При переборе массива вы пропускаете «свой» индекс:
var what_to_do = function( index, element ) {
// do stuff with element
}
// handle all elements _before_ this
var i = 0;
for( ; i != this.index && i != elements.length; ++i ) {
what_to_do( i, elements[i] );
}
++i; // skip this one
for( ; i < elements.length; ++i ) {
what_to_do( i, elements[i] );
}
«Делать вещи» можно заключить в анонимную функцию, чтобы не повторяться.
- РЕДАКТИРОВАТЬ -
Хммм ... и вы даже можете исключить функцию "пропустить":
function skip_ith( elements, thisindex, f ) {
var i = 0;
for( ; i != thisindex && i != elements.length; ++i ) {
f( i, elements[i] );
}
++i;
for( ; i < elements.length; ++i ) { // note: < because i may be length+1 here
f( i, elements[i] );
}
}
Приложение:
for( var i = 0; i != elements.length; ++i ) {
skip_ith( elements, i, function( index, element ) {
// do stuff with element
} );
}