Цитата:
|
Элементы в массиве могут быть пропущены.
var a = [1, 2, , , , 3]; |
Понял)) Спасибо))
|
В моздоках фигурирует такая:
if (!Array.prototype.indexOf)
{
Array.prototype.indexOf = function(searchElement /*, fromIndex */)
{
"use strict";
if (this === void 0 || this === null)
throw new TypeError();
var t = Object(this);
var len = t.length >>> 0;
if (len === 0)
return -1;
var n = 0;
if (arguments.length > 0)
{
n = Number(arguments[1]);
if (n !== n) // shortcut for verifying if it's NaN
n = 0;
else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0))
n = (n > 0 || -1) * Math.floor(Math.abs(n));
}
if (n >= len)
return -1;
var k = n >= 0
? n
: Math.max(len - Math.abs(n), 0);
for (; k < len; k++)
{
if (k in t && t[k] === searchElement)
return k;
}
return -1;
};
}
Мот кто объяснит зачем монипуляции до цикла? |
Не особо-то она правильная, по-моему... Хотя не мне об этом говорить))
|
Вроде в доках заявлена, как эквивалент встроенной.
|
Цитата:
|
Ну я начал копаться в Array.js потом перешёл на доки от мозилы. Там вроде для всех новых методов массива есть эквиваленты. Ну индексоф и попался...
|
Цитата:
видно, не так это просто сделать :)
if( typeof Array.prototype.forEach === 'undefined' )
Array.prototype.forEach = function( func ){
var arrl, arr = this.reverse();
do if (arrl in arr)
func( arr[arrl], arrl, arr );
while( arrl -= 1 > 0 );
}
// test ..
var log=[];
function each( array, func ){
try { array.forEach( func ) } catch(e) {};
}
each( [1,2,3,"break it",4,5,6,7], function(a){
log.push(a);
if( a==='break it' ) throw "";
} );
alert( "Прошли : \n\n"+ log.join("\n") );
|
Цитата:
|
| Часовой пояс GMT +3, время: 14:38. |