Array.indexOf()

polyfill。これまでので一番簡単だったかも。

JavaScript

Array.prototype.indexOf = function(t, p) {
    for (var r = -1, i = p || 0, l = this.length; i < l; ++i) this[i] === t && (r = i);
    return r;
};

Array.prototype.lastIndexOf = function(t, p) {
    for (var r = -1, i = p || this.length - 1, l = 0; i > l; --i) this[i] === t && (r = i);
    return r;
};



var a = [1,2,3,4,5,6,7,8,9];
document.write(
    a.indexOf(5) + "/" +
    a.indexOf(10) + "/" +
    a.indexOf(9) + "/" +
    a.indexOf(1 + "/" +
    a.indexOf(2) + "/" +
    a.indexOf() + "<hr />"
);

// answer : 4/4/4/-1/-1/-1


var b = [1,2,3,4,5,6,7,8,9];
document.write(
    b.lastIndexOf(4) + "/" +
    b.lastIndexOf(4,1) + "/" +
    b.lastIndexOf(4,4) + "/" +
    b.lastIndexOf(4,5) + "/" +
    b.lastIndexOf(4,100) + "/" +
    b.lastIndexOf()
);

// answer : 3/-1/3/3/3/-1