持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第32天,点击查看活动详情
目录
今日题
题目
实现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每日一题》专栏,如果你对本专栏有任何建议,欢迎反馈。如果你对此文章中的题目还有不懂的地方,那么请在评论区留言与大家一起讨论吧。 创作不易,少年,就请留个赞再走吧!