Array对象扩展indexOf,contains方法实例ca88亚洲城唯一官方网站

复制代码 代码如下:

indexOf
返回元素在数组的索引,没有则返回-1。与string的indexOf方法差不多。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:

javascript的Array没有contains方法,有时候这会不方便,contains方法实现很简单:

背景:JavaScript中Array对象的标准方法中,没有indexOf()方法,可通过下面的代码扩展。

<script type=”text/javascript”>
Array.prototype.indexOf = function (str) {
for (var i = 0; i < this.length; i++) {
if (str == this[i]) {
return i;
}
}
return -1;
}
</script>

复制代码 代码如下:

复制代码 代码如下:

复制代码 代码如下:

您可能感兴趣的文章:

  • 为JS扩展Array.prototype.indexOf引发的问题及解决办法
  • 为JS扩展Array.prototype.indexOf引发的问题探讨及解决
  • javascript当中的代码嗅探扩展原生对象和原型(prototype)
  • 基于prototype扩展的JavaScript常用函数库
  • 扩展javascript的Date方法实现代码(prototype)
  • javascript中的prototype属性使用说明(函数功能扩展)
  • javascript Prototype
    对象扩展
  • js实现prototype扩展的方法(字符串,日期,数组扩展)

Array.prototype.indexOf = function(el, start) {
    var start = start || 0;
    for ( var i=0; i < this.length; ++i ) {
        if ( this[i] === el ) {
            return i;
ca88亚洲城唯一官方网站,        }
    }
    return -1;
};
var array = [2, 5, 9];
var index = array.indexOf(2);
// index is 0
index = array.indexOf(7);
// index is -1

function contains(a, obj) {
    var i = a.length;
    while (i–) {
       if (a[i] === obj) {
           return true;
       }
    }
    return false;
}

if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(elt) {
var len = this.length >>> 0;
var from = Number(arguments[1]) || 0;
from = (from < 0) ? Math.ceil(from) : Math.floor(from);
if (from < 0) from += len;
for (; from < len; from++) {
if (from in this && this[from] === elt) return from;
}
return – 1;
};
}

lastIndexOf
与string的lastIndexOf方法差不多。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:

当然我们也可以扩展Array类,如下js

您可能感兴趣的文章:

  • js数组去重的三种常用方法总结
  • JS实现数组去重方法总结(六种方法)
  • JavaScript数组去重的两种方法推荐
  • js实现数组去重、判断数组以及对象中的内容是否相同
  • js算法中的排序、数组去重详细概述
  • javascript数组去重3种方法的性能测试与比较
  • javascript数字数组去重复项的实现代码
  • JS数组去重与取重的示例代码
  • js indexOf()定义和用法
  • JavaScript从数组的indexOf()深入之Object的Property机制
  • JavaScript使用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;
};

Array.prototype.contains = function(obj) {
    var i = this.length;
    while (i–) {
        if (this[i] === obj) {
            return true;
        }
    }
    return false;
}

forEach
各类库中都实现相似的each方法。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:

这样就可以方便的使用contains方法了:

复制代码 代码如下:

复制代码 代码如下:

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 9

alert([1, 2, 3].contains(2)); // => true
alert([1, 2, 3].contains(‘2’)); // => false

every
如果数组中的每个元素都能通过给定的函数的测试,则返回true,反之false。换言之给定的函数也一定要返回true与false
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:

您可能感兴趣的文章:

  • javascript String
    的扩展方法集合
  • Javascript
    String对象扩展HTML编码和解码的方法
  • JavaScript
    Array扩展实现代码
  • Javascript string
    扩展库代码
  • javascript
    Array数组对象的扩展函数代码
  • 为JS扩展Array.prototype.indexOf引发的问题探讨及解决
  • js Array对象的扩展函数代码
  • JavaScript
    Array对象扩展indexOf()方法
  • 详解JS中Array对象扩展与String对象扩展

复制代码 代码如下:

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 false
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// passed is true

some
类似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 false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// passed is true

filter
把符合条件的元素放到一个新数组中返回。
如果其他浏览器没有实现此方法,可以用以下代码实现兼容:

复制代码 代码如下:

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;
};
<div id=”highlighter_240589″>
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

您可能感兴趣的文章:

  • javascript String
    的扩展方法集合
  • Javascript
    String对象扩展HTML编码和解码的方法
  • Javascript string
    扩展库代码
  • javascript
    Array数组对象的扩展函数代码
  • 为JS扩展Array.prototype.indexOf引发的问题探讨及解决
  • js Array对象的扩展函数代码
  • JavaScript
    Array对象扩展indexOf()方法
  • JavaScript中扩展Array
    contains方法实例
  • 详解JS中Array对象扩展与String对象扩展

发表评论

电子邮件地址不会被公开。 必填项已用*标注