A única diferença que vejo em map e foreach é que map
está retornando uma matriz e forEach
não está. Porém, eu nem entendo a última linha do forEach
método " func.call(scope, this[i], i, this);
". Por exemplo, não é " this
" e " scope
" referindo-se ao mesmo objeto e não é this[i]
e i
referindo-se ao valor atual no loop?
Notei em outro post que alguém disse "Use forEach
quando quiser fazer algo com base em cada elemento da lista. Você pode adicionar coisas à página, por exemplo. Essencialmente, é ótimo para quando você deseja" efeitos colaterais ". Não sei o que significa efeitos colaterais.
Array.prototype.map = function(fnc) {
var a = new Array(this.length);
for (var i = 0; i < this.length; i++) {
a[i] = fnc(this[i]);
}
return a;
}
Array.prototype.forEach = function(func, scope) {
scope = scope || this;
for (var i = 0, l = this.length; i < l; i++) {
func.call(scope, this[i], i, this);
}
}
Finalmente, existem outros usos reais para esses métodos em javascript (uma vez que não estamos atualizando um banco de dados) além de manipular números como este:
alert([1,2,3,4].map(function(x){ return x + 1})); //this is the only example I ever see of map in javascript.
Obrigado por qualquer resposta.
map
eforEach
? Tudo o que recebo do Google são especificações de uso e tutoriais.