Ну я же выше объяснил. 
	 | 
	
		
 Там написано, что так сделано в ECMA и что все как зомби должны повторять, я же хочу понять, почему в ECMA так сделали. На мой взгляд, методы числовых массивов должны работать с ними именно как с числовыми массивами, а не как с ассоциативными, это довольно логично звучит, но в ECMA какая-то другая логика, вот ее я и хочу понять. 
	 | 
	
		
 forEach/map/... перебирают элементы массива. В твоём примере в массиве только один элемент под индексом 5. Вот если бы ты написал  
	
arr = [];
arr[0] = undefined;
arr[1] = undefined;
// ...
arr[4] = undefined;
arr[5] = 'TEXT';
alert(
    arr.reduce(function(a, n) {
        return a + n;
    }, '')
);
 Всё логично, перебираются элементы массива, если элемента нет, то нет. | 
	
		
 Цитата: 
	
  | 
	
		
 ну, в защиту Riim, можно сказать, что arr.length == 6 
	только это не логика, это соглашение ;) Разработчики решили, что в числовых массивах могут быть пропущены элементы  | 
	
		
 Цитата: 
	
 
if ( filter( el, i ) ) {
или такого 
if(filter(el,i)){
я предпочту что-то типа 
if( filter(el, i) ){
 | 
	
		
 А надо бы  
	
if (filter(el, i)) {
 | 
| Часовой пояс GMT +3, время: 16:47. |