indexOf
返回元素在数组的索引,没有则返回-1。与string的indexOf方法差不多。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
Array.prototype.indexOf = function(el, start) {var start = start || 0;for ( var i=0; i < this.length; ++i ) {if ( this[i] === el ) {return i;}}return -1;};var array = [2, 5, 9];var index = array.indexOf(2);// index is 0index = array.indexOf(7);// index is -1lastIndexOf
与string的lastIndexOf方法差不多。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
Array.prototype.indexOf = function(el, start) {var start = start || 0;for ( var i=0; i < this.length; ++i ) {if ( this[i] === el ) {return i;}}return -1;};forEach
各类库中都实现相似的each方法。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
Array.prototype.forEach = function(fn, thisObj) {var scope = thisObj || window;for ( var i=0, j=this.length; i < j; ++i ) {fn.call(scope, this[i], i, this);}};function printElt(element, index, array) {print("[" + index + "] is " + element); // assumes print is already defined}[2, 5, 9].forEach(printElt);// Prints:// [0] is 2// [1] is 5// [2] is 9every
如果数组中的每个元素都能通过给定的函数的测试,则返回true,反之false。换言之给定的函数也一定要返回true与false
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
Array.prototype.every = function(fn, thisObj) {var scope = thisObj || window;for ( var i=0, j=this.length; i < j; ++i ) {if ( !fn.call(scope, this[i], i, this) ) {return false;}}return true;};function isBigEnough(element, index, array) {return (element <= 10);}var passed = [12, 5, 8, 130, 44].every(isBigEnough);// passed is falsepassed = [12, 54, 18, 130, 44].every(isBigEnough);// passed is truesome
类似every函数,但只要有一个通过给定函数的测试就返回true。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
Array.prototype.some = function(fn, thisObj) {var scope = thisObj || window;for ( var i=0, j=this.length; i < j; ++i ) {if ( fn.call(scope, this[i], i, this) ) {return true;}}return false;};function isBigEnough(element, index, array) {return (element >= 10);}var passed = [2, 5, 8, 1, 4].some(isBigEnough);// passed is falsepassed = [12, 5, 8, 1, 4].some(isBigEnough);// passed is truefilter
把符合条件的元素放到一个新数组中返回。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
Array.prototype.filter = function(fn, thisObj) {var scope = thisObj || window;var a = [];for ( var i=0, j=this.length; i < j; ++i ) {if ( !fn.call(scope, this[i], i, this) ) {continue;}a.push(this[i]);}return a;};function isBigEnough(element, index, array) {return (element <= 10);}var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);map
让数组中的每一个元素调用给定的函数,然后把得到的结果放到新数组中返回。。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
Array.prototype.map = function(fn, thisObj) {var scope = thisObj || window;var a = [];for ( var i=0, j=this.length; i < j; ++i ) {a.push(fn.call(scope, this[i], i, this));}return a;};var numbers = [1, 4, 9];var roots = numbers.map(Math.sqrt);// roots is now [1, 2, 3]// numbers is still [1, 4, 9]reduce
让数组元素依次调用给定函数,最后返回一个值,换言之给定函数一定要用返回值。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:
Array.prototype.reduce = function(fun /*, initial*/){var len = this.length >>> 0;if (typeof fun != "function")throw new TypeError();if (len == 0 && arguments.length == 1)throw new TypeError();var i = 0;if (arguments.length >= 2){var rv = arguments[1];} else{do{if (i in this){rv = this[i++];break;}if (++i >= len)throw new TypeError();}while (true);}for (; i < len; i++){if (i in this)rv = fun.call(null, rv, this[i], i, this);}return rv;};var total = [0, 1, 2, 3].reduce(function(a, b){ return a + b; });// total == 6版权声明:本文为yjlwl1213原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。