Array.prototype.js [plain text]
function every(callback ) {
"use strict";
if (this === null)
throw new @TypeError("Array.prototype.every requires that |this| not be null");
if (this === undefined)
throw new @TypeError("Array.prototype.every requires that |this| not be undefined");
var array = @Object(this);
var length = array.length >>> 0;
if (typeof callback !== "function")
throw new @TypeError("Array.prototype.every callback must be a function");
var thisArg = arguments.length > 1 ? arguments[1] : undefined;
for (var i = 0; i < length; i++) {
if (!(i in array))
continue;
if (!callback.@call(thisArg, array[i], i, array))
return false;
}
return true;
}
function forEach(callback ) {
"use strict";
if (this === null)
throw new @TypeError("Array.prototype.forEach requires that |this| not be null");
if (this === undefined)
throw new @TypeError("Array.prototype.forEach requires that |this| not be undefined");
var array = @Object(this);
var length = array.length >>> 0;
if (typeof callback !== "function")
throw new @TypeError("Array.prototype.forEach callback must be a function");
var thisArg = arguments.length > 1 ? arguments[1] : undefined;
for (var i = 0; i < length; i++) {
if (i in array)
callback.@call(thisArg, array[i], i, array);
}
}
function filter(callback ) {
"use strict";
if (this === null)
throw new @TypeError("Array.prototype.filter requires that |this| not be null");
if (this === undefined)
throw new @TypeError("Array.prototype.filter requires that |this| not be undefined");
var array = @Object(this);
var length = array.length >>> 0;
if (typeof callback !== "function")
throw new @TypeError("Array.prototype.filter callback must be a function");
var thisArg = arguments.length > 1 ? arguments[1] : undefined;
var result = [];
var nextIndex = 0;
for (var i = 0; i < length; i++) {
if (!(i in array))
continue;
var current = array[i]
if (callback.@call(thisArg, current, i, array))
result[nextIndex++] = current;
}
return result;
}
function map(callback ) {
"use strict";
if (this === null)
throw new @TypeError("Array.prototype.map requires that |this| not be null");
if (this === undefined)
throw new @TypeError("Array.prototype.map requires that |this| not be undefined");
var array = @Object(this);
var length = array.length >>> 0;
if (typeof callback !== "function")
throw new @TypeError("Array.prototype.map callback must be a function");
var thisArg = arguments.length > 1 ? arguments[1] : undefined;
var result = [];
result.length = length;
var nextIndex = 0;
for (var i = 0; i < length; i++) {
if (!(i in array))
continue;
result[i] = callback.@call(thisArg, array[i], i, array)
}
return result;
}
function some(callback ) {
"use strict";
if (this === null)
throw new @TypeError("Array.prototype.some requires that |this| not be null");
if (this === undefined)
throw new @TypeError("Array.prototype.some requires that |this| not be undefined");
var array = @Object(this);
var length = array.length >>> 0;
if (typeof callback !== "function")
throw new @TypeError("Array.prototype.some callback must be a function");
var thisArg = arguments.length > 1 ? arguments[1] : undefined;
for (var i = 0; i < length; i++) {
if (!(i in array))
continue;
if (callback.@call(thisArg, array[i], i, array))
return true;
}
return false;
}
function fill(value )
{
"use strict";
if (this === null)
throw new @TypeError("Array.prototype.fill requires that |this| not be null");
if (this === undefined)
throw new @TypeError("Array.prototype.fill requires that |this| not be undefined");
var O = @Object(this);
var len = O.length >>> 0;
var relativeStart = 0;
if (arguments.length > 1 && arguments[1] !== undefined)
relativeStart = arguments[1] | 0;
var k = 0;
if (relativeStart < 0) {
k = len + relativeStart;
if (k < 0)
k = 0;
} else {
k = relativeStart;
if (k > len)
k = len;
}
var relativeEnd = len;
if (arguments.length > 2 && arguments[2] !== undefined)
relativeEnd = arguments[2] | 0;
var final = 0;
if (relativeEnd < 0) {
final = len + relativeEnd;
if (final < 0)
final = 0;
} else {
final = relativeEnd;
if (final > len)
final = len;
}
for (; k < final; k++)
O[k] = value;
return O;
}
function find(callback ) {
"use strict";
if (this === null)
throw new @TypeError("Array.prototype.find requires that |this| not be null");
if (this === undefined)
throw new @TypeError("Array.prototype.find requires that |this| not be undefined");
var array = @Object(this);
var length = array.length >>> 0;
if (typeof callback !== "function")
throw new @TypeError("Array.prototype.find callback must be a function");
var thisArg = arguments.length > 1 ? arguments[1] : undefined;
for (var i = 0; i < length; i++) {
if (!(i in array))
continue;
if (callback.@call(thisArg, array[i], i, array))
return array[i];
}
return undefined;
}
function findIndex(callback ) {
"use strict";
if (this === null)
throw new @TypeError("Array.prototype.findIndex requires that |this| not be null");
if (this === undefined)
throw new @TypeError("Array.prototype.findIndex requires that |this| not be undefined");
var array = @Object(this);
var length = array.length >>> 0;
if (typeof callback !== "function")
throw new @TypeError("Array.prototype.findIndex callback must be a function");
var thisArg = arguments.length > 1 ? arguments[1] : undefined;
for (var i = 0; i < length; i++) {
if (!(i in array))
continue;
if (callback.@call(thisArg, array[i], i, array))
return i;
}
return -1;
}