A única diferença que vejo em map e foreach é que mapestá retornando uma matriz e forEachnão está. Porém, eu nem entendo a última linha do forEachmé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 ireferindo-se ao valor atual no loop?
Notei em outro post que alguém disse "Use forEachquando 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.
mapeforEach? Tudo o que recebo do Google são especificações de uso e tutoriais.