让前端飞

Array原型的some方法实现-不可忽略的小细节

2019-11-12  本文已影响0人  Indomi

some方法其实可以解释为把所有的项执行callback,只要有其中一个返回true整个结果就返回true

定义:some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。

在网上主要的实现有两种

第一种

Array.prototype.some = function (cb) {
    for (let i = 0; i < this.length; i++) {
        if (cb && cb(this[i], i, this) {
            return true
        }
    }
    return false
}

第二种

Array.prototype.some = function (cb) {
let result = false
for (let i = 0; i < this.length; i++) {
  result = cb && cb(this[i], i, this)
}
return result
}

其中区别在于,调用的数组循环了多少次

而实际上测试:

测试
some循环时,只要遇到了true就立即返回,所以第二种写法是错的,这一点小细节需要注意
上一篇 下一篇

猜你喜欢

热点阅读