JavaScript数组检索指定元素

快乐打工仔 分类:实例代码

JavaScript数组检索指定元素属于前端实例代码,有关更多实例代码大家可以查看

当前实现此功能非常简单,ES5已经提供相关方法。

(1)indexOf方法参阅JavaScript indexOf()一章节。

(2).lastindexOf方法参阅JavaScript lastIndexOf()一章节。

但是上面两个方法都存在的浏览器兼容问题,也就是IE9以下浏览器并不支持。

下面看一个模拟实现的效果,代码如下:

if (!Array.prototype.indexOf) {
  Array.prototype.indexOf = function (elt/*, from*/) {
    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;
  }
}
var arr=["前端教程网","青岛市南区",3,"css教程","pipipi.net"];
console.log(arr.indexOf("前端教程网"));

上面的代码实现了我们的要求,下面介绍一下它实现过程。

一.代码注释:

(1).if (!Array.prototype.indexOf) ,判断当前浏览器是否支持indexOf()方法,如果不支持就需要模拟实现。

(2).Array.prototype.indexOf = function (elt/*, from*/) {},为数组对象原型添加一个indexOf()方法,第一个参数是要检索的元素,第二个参数可以省略,用来规定从哪个位置开始检索。

(3).var len = this.length,获取数组元素的个数。

(4).var from = Number(arguments[1]) || 0,如果规定的第二个参数,并且能够转换成数字,那么就从指定的位置开始检索,否则就从第一个元素开始检索。

(5).from = (from < 0) ? Math.ceil(from) : Math.floor(from),如果from小于0,那么就进行上舍入操作,如果大于0,那么就进行下舍入操作。(6).if (from < 0) {

  from += len;

},如果form小于0,那么就通过form+=len计算出正向的索引值。

(7).for (; from < len; from++) {

  if (from in this && this[from] === elt) {

    return from;

  }

},通过for循环进行遍历操作。

数组的索引可以看做对象的属性,所以from in this,就是判断数组是否有次索引。

this[from] === elt,判断索引下是否有孩子定的元素。

(8).return -1,如果没有那么就返回-1。

二.相关阅读:

(1).prototype参阅JavaScript prototype原型一章节。

(2).arguments参阅JavaScript arguments一章节。

(3).Math.ceil方法参阅JavaScript Math.ceil()一章节。

(4).Math.floor方法参阅JavaScript Math.floor()一章节。

JavaScript数组检索指定元素,这样的场景在实际项目中还是用的比较多的,关于JavaScript数组检索指定元素就介绍到这了。

回复

我来回复
  • 暂无回复内容