Единственное отличие, которое я вижу в карте и foreach, состоит в том, что map
возвращает массив, а forEach
- нет. Однако я даже не понимаю последнюю строку метода forEach
"func.call(scope, this[i], i, this);
". Например, не относится ли "this
" и "scope
" к одному и тому же объекту и не относится ли this[i]
и i
к текущему значению в цикле?
Я заметил, что в другом сообщении кто-то сказал: "Используйте forEach
, когда вы хотите что-то сделать на основе каждого элемента списка. Например, вы можете добавлять вещи на страницу. По сути, это здорово, когда вы" побочные эффекты". Я не знаю, что подразумевается под действием побочных эффектов.
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);
}
}
Наконец, существуют ли какие-либо реальные применения этих методов в javascript (поскольку мы не обновляем базу данных), кроме как манипулировать такими цифрами:
alert([1,2,3,4].map(function(x){ return x + 1})); //this is the only example I ever see of map in javascript.
Спасибо за любой ответ.