introduzir
Modo Iterador: fornece um método para solicitar elementos individuais em um objeto agregado sem expor a representação interna do objeto.
Várias características dos iteradores são:
1. Acesse o conteúdo de um objeto agregado sem expor sua representação interna.
2. Forneça uma interface unificada para atravessar diferentes estruturas de coleta, apoiando assim o mesmo algoritmo para operar em diferentes estruturas de coleta.
3. Alterando a estrutura de coleta em que o iterador está localizado durante a travessia pode causar problemas (por exemplo, o item não pode ser modificado no foreach em C#).
texto
Na iteração geral, precisamos ter pelo menos 2 métodos, HasNext () e Next (), para que possamos atravessar todos os objetos. Vamos primeiro dar um exemplo:
A cópia do código é a seguinte:
var agg = (function () {
var índice = 0,
dados = [1, 2, 3, 4, 5],
comprimento = data.length;
retornar {
Próximo: function () {
elemento var;
if (! this.hasnext ()) {
retornar nulo;
}
elemento = dados [index];
índice = índice + 2;
elemento de retorno;
},
Hasnext: function () {
Índice de retorno <comprimento;
},
Rewind: function () {
índice = 0;
},
atual: function () {
retornar dados [índice];
}
};
} ());
O método de uso é o mesmo que em C#:
A cópia do código é a seguinte:
// O resultado da iteração é: 1, 3, 5
while (agg.hasnext ()) {
console.log (agg.Next ());
}
Obviamente, você também pode redefinir os dados por meio de métodos adicionais e continuar com outras operações:
A cópia do código é a seguinte:
// Reiniciar
agg.rewind ();
console.log (agg.current ()); // 1
Exemplo de aplicativo jQuery
Um iterador muito famoso em jQuery é o método $ .Eada. Através de cada um, podemos passar em uma função adicional e depois iterar em todos os itens do item, por exemplo:
A cópia do código é a seguinte:
$ .EACH (['DUDU', 'DUDU', 'iogurte garotinha', 'que mm'], função (índice, valor) {
console.log (index + ':' + valor);
});
//ou
$ ('li'). cada (função (index) {
console.log (index + ':' + $ (this) .Text ());
});
Resumir
O cenário de uso do iterador é: os resultados do conjunto geralmente variam de maneiras diferentes. Não queremos expor sua estrutura interna, mas também deixamos o código do cliente acessar transparentemente os elementos. Nesse caso, podemos usar o modo iterador.