实现数组的slice方法

243 阅读2分钟

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

目录

今日题

  1. 题目
  2. 分析 昨日题
  3. 题目
  4. 答案
  5. 解析 结语

今日题

题目

实现Array##slice

分析

Array##slice会将被截取的元素以数组形式进行返回,且该方法不影响原数组。并且slice方法接收两个可选的参数([begin, [, end]]),在这里我们要注意slice截取元素的规则是什么,以及当无参数只传递了一个参数参数为负数时应该如何处理

昨日题

题目

实现Array.prototype._find,作用同Array.prototype.find基本一致

答案

Array.prototype._find = function (callback, obj) {
    if (typeof callback !== 'function') throw new TypeError(`${callback} is not function`)
    var o = Object(obj || this)
    for (var i = 0, len = this.length; i < len; i++) {
        if (callback.call(o, this[i], i, this)) return this[i]
    }
}

解析

_find接收两个参数,即(callback, [, this]),第一个为必传参数,其值只能为函数,第二个为可选参数,其值为一个对象,该对象会作为callback回调函数中的this对象所存在,默认为window_find的基本作用是对数组中的每位成员均执行一次传入的函数callback,并且每次都会向该函数传递三个参数,即当前成员的值,当前成员的索引值,当前数组,由callback执行一系列副作用操作并返回一个值,如果callback的返回值最终会被转为true,则_find函数立即停止遍历并返回为true所对应的这个成员,否则返回undefined

结语

此文章已收录至《JavaScript每日一题》专栏,如果你对本专栏有任何建议,欢迎反馈。如果你对此文章中的题目还有不懂的地方,那么请在评论区留言与大家一起讨论吧。 创作不易,少年,就请留个赞再走吧!