手写数组方法(十四):includes

307 阅读2分钟

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

今天带大家学习数组的includes方法。

语法

arr.includes(valueToFind[, fromIndex])

参数

  • valueToFind:需要查找的元素值。 备注: 使用includes比较字符串和字符时是区分大小写的。

  • fromIndex: 可选。从fromIndex 索引处开始查找valueToFind。如果为负值,则按升序从array.length + fromIndex的索引开始搜(即从末尾开始往前跳fromIndex的绝对值个索引,然后往后搜寻)。默认为0, 假如array.length + fromIndex依然为负,则效果同0

返回值

如果在数组中(或 fromIndex 指定的范围中)找到了 valueToFind,则返回 true,否则返回 false

0 的值将全部视为相等,与符号无关(即 -00+0 相等),但 false 不被认为与 0 相等。

例子

image.png

  • 第一个例子,在数组中找元素1,显然是有的,返回true
  • 第二个例子,在数组中找元素0,显然没有,返回false
  • 第三个例子,从下标1开始在数组中找元素1,那下标在1以及之后的元素只有23了,找不到元素1,返回false
  • 第四个例子,从下标1开始在数组中找元素3,那下标在1以及之后的元素有23,找到了3,返回true

image.png

我们让fromIndex这个参数为负数:

  • 第一个例子等价于list.includes(3, 3 + (-1))list.includes(3, 2)
  • 第二个例子等价于list.includes(1, 0)
  • 第三个例子等价于list.includes(1, 2)

手写

Array.prototype._includes = function(valueToFind, fromIndex) {
    let res = false;
    let start = fromIndex >= 0 ? fromIndex : Math.abs(this.length + fromIndex);
    for(let i = fromIndex=== undefined ? 0 : start; i < this.length; i++) {
        if(this[i] === valueToFind) {
            res = true;
        }
    }
    return res;
}

结语

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