Функция forEach выполняет переданную ей в качестве аргумента функцию для всех элементов массива. Она добавлена в стандарт JavaScript 1.6 core, однако большинство браузеров используют 1.5 core, следовательно эта функция для них недоступна. Самостоятельно создать эту функцию для класса Array можно следующим способом:

if ( !Array.prototype.forEach ) {
	Array.method('forEach', function(fn, thisObj) {
		var scope = thisObj || window;
		for ( var i = 0, len = this.length; i < len; ++i ) {
			fn.call(scope, this[i], i, this);
		}
	});
}

В начале мы проверяем, объявлена ли эта функция в классе Array. Если нет, то добавляем её туда используя свойство prototype. Созданная нами функция принимает два аргумента: функцию-callback, которую нужно выполнять для каждого элемента массива и ссылку на объект, в контексте которого этот callback будет выполняться. В callback в свою очередь передаются три аргумента: текущий элемент массива, счетчик и ссылка на массив.

Примеры применения.

Возведение каждого элемента массива в квадрат:

var aList = [1,2,3,4,5];
aList.forEach(function (value, counter, theArray){
	return theArray[counter] = value * value;
});
// теперь aList содержит элементы 1,4,9,16,25

Суммирование всех элементов массива. Выполнение функции-аргумента в контексте объекта:

var aList = [1,2,3,4,5];

var someObject = {
	sum : 0
}

aList.forEach(function (value){
	this.sum += value;
}, someObject);

// теперь someObject.sum равен 15
Добавить в закладки:

Оставить комментарий