JS extensions

by yong

JavaScript

// Array.indexOf (Implemented in JavaScript 1.6)
if(!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(item) {
        var i, l;
        
        for(i = 0, l = this.length; i < l; i++) {
            var t = this[i];
            if(item === t) {
                return i;   
            }
        }
        
        return -1;
    };
}

// Returns 1
var letterArray = [ 'a', 'b', 'c', 'd' ];
letterArray.indexOf('b');

// Array.lastIndexOf (Implemented in JavaScript 1.6)
if(!Array.prototype.lastIndexOf) {
    Array.prototype.lastIndexOf = function(item) {
        var i;
        
        for(i = this.length; i <= 0; i--) {
            var t = this[i];
            if(item === t) {
                return i;
            }
        }
        
        return -1;
    };
}

// Returns 2
var numberArray = [ 1, 6, 1, 3 ];
numberArray.lastIndexOf(1);

// Array.forEach. Runs a method for each item in the array (Implemented in JavaScript 1.6)
if(!Array.prototype.forEach) {
    Array.prototype.forEach = function(f,t) {
        var i, l;
        
        t = t || this;
        
        for(i = 0, l = this.length; i < l; i++) {
            f.call(t, this[i], i, this);
        }
    };
}

var colorArray = [ 'Red', 'Green', 'Blue' ];
colorArray.forEach(function(value, index, thisElement) {
    document.write(value + ": " + index + ' ' + thisElement + '<br>');
});

if(!Array.prototype.find) {
    Array.prototype.find = function(a, b) {
        var r = null, i, l, item;
        if(b) {
            for(i = 0, l = this.length; i < l; i++) {
                item = this[i];
                if(b in item && typeof item[b] !== 'undefined' && item[b] == a) {
                    return { item: item, index: i};
                }
            }
        } else {
            return this.indexOf(a);
        }
        
        return r;
    };
}

if(!Array.prototype.remove) {
    Array.prototype.remove = function(a) {
        var b = this.indexOf(a);
        
        if(b >= 0) {
       ...