some方法其實(shí)可以解釋為把所有的項(xiàng)執(zhí)行callback凿将,只要有其中一個(gè)返回true
整個(gè)結(jié)果就返回true
定義:some() 方法測(cè)試數(shù)組中是不是至少有1個(gè)元素通過了被提供的函數(shù)測(cè)試。它返回的是一個(gè)Boolean類型的值狮斗。
在網(wǎng)上主要的實(shí)現(xiàn)有兩種
第一種
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
}
其中區(qū)別在于推汽,調(diào)用的數(shù)組循環(huán)了多少次
- 方法一:只要
true
就立即return
补疑,不會(huì)循環(huán)完所有的項(xiàng) - 方法二:所有項(xiàng)都遍歷完,時(shí)間復(fù)雜度為O(n)
而實(shí)際上測(cè)試:
測(cè)試
some
循環(huán)時(shí)歹撒,只要遇到了true
就立即返回莲组,所以第二種寫法是錯(cuò)的,這一點(diǎn)小細(xì)節(jié)需要注意