手写数组方法(十三):indexOf

199 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情

今天带领大家来学习下数组的indexOf方法。

语法

arr.indexOf(searchElement[, fromIndex])

参数

  • searchElement: 要查找的元素
  • fromIndex: 可选。 开始查找的位置。如果该索引值大于或等于数组长度,意味着不会在数组里查找,返回 -1。如果参数中提供的索引值是一个负值,则将其作为数组末尾的一个抵消,即 -1 表示从最后一个元素开始查找,-2 表示从倒数第二个元素开始查找 ,以此类推。 注意:如果参数中提供的索引值是一个负值,并不改变其查找顺序,查找顺序仍然是从前向后查询数组。如果抵消后的索引值仍小于 0,则整个数组都将会被查询。其默认值为 0。

返回值

首个被找到的元素在数组中的索引位置; 若没有找到则返回 -1

例子

image.png

  • 第一个例子,我们要找数组中1的下标,显然是0
  • 第二个例子,我们要从数组中的下标2开始找,1在下标2之前,在之后并没有1,故返回-1
  • 第三个例子,我们要在数组中找到4的下标,数组中没有4,于是返回-1
  • 第四个例子,我们要从数组中的下标2开始找,找3,刚好3在下标2处,返回2

手写

Array.prototype._indexOf = function(searchElement, fromIndex) {
    let res = -1;
    for(let i = fromIndex || 0; i < this.length; i++) {
        if(this[i] === searchElement) {
            res = i;
        }
    }
    return res;
}

image.png

没毛病!

结语

今天关于数组indexOf的介绍就讲到这里,关注我获取更多有关数组方法的讲解,后续会持续更新。我是末世未然,一个爱折腾的新晋奶爸,祝好