从我在文档中看到的内容来看,_. find()函数与_.some()
非常相似有谁知道两者之间是否存在(性能)优势?
答案 0 :(得分:12)
它们的性能特征可能相同,假设您想知道在特定情况下使用find
或some
。他们都是以同样的方式懒惰。
不同之处在于输出。 find
将返回值,some
将返回boolean
。
我检查了源(1.4.4)。 some
和find
都在内部使用some
(=== any
)。因此,即使使用some
的原生实现,它也会同时使find
和some
受益。
答案 1 :(得分:2)
如果你查看它的来源,你会发现那两个是相同的,_。find实际上叫_.some。
_.find = _.detect = function(obj, iterator, context) {
var result;
any(obj, function(value, index, list) {
if (iterator.call(context, value, index, list)) {
result = value;
return true;
}
});
return result;
};
var any = _.some = _.any = function(obj, iterator, context) {
iterator || (iterator = _.identity);
var result = false;
if (obj == null) return result;
if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
each(obj, function(value, index, list) {
if (result || (result = iterator.call(context, value, index, list))) return breaker;
});
return !!result;
};