В моем приложении мне нужно выполнить некоторые итерации с массивоподобным объектом.
Поэтому я пишу собственный метод util:
Util.forEach=function(iterator,callback,context){
if(iterator.length){
for(var i=0;i<iterator.length;i++){
var val=iterator[i];
callback && callback.call(context||null,val,i);
}
}
}
Тогда я сталкиваюсь с некоторыми проблемами:
Предположим, у меня есть массив: var ary = [1,2,3,4,5];
1. как разорвать петлю?
Например, если я хочу узнать, включено ли значение '2' в массив, я могу попробовать это:
Util.forEach(ary,function(value,index){
if(value==2){
//find mached value,now I should break and return this value.
//but I can not use 'break' in this context.
}
});
2. удалить значение массива при использовании итератора
Если я хочу удалить значение '2' из массива, я могу попробовать это:
Util.forEach(ary,function(value,index){
if(value==2){
//delete it.
ary.splice(i,1);
// I wonder if this is the safe way?
}
});
Поскольку в Java мы не можем сделать это при итерации массива, это вызовет исключение параллелизма.
Хотя я запускаю приведенный выше код без каких-либо ошибок, но я не уверен, что это лучший метод?