-
Notifications
You must be signed in to change notification settings - Fork 1.4k
finders keepers
S1ngS1ng edited this page Jul 9, 2017
·
1 revision
- 这个
function
接受一个数组参数arr
和一个函数参数func
。返回值为arr
中满足参数func
的第一个元素 - 如果
arr
是[1, 2, 3]
,func
是function(num) {return num === 2;}
,那么返回值应为2
- 这道题目非常简单,我们先来看看如何用循环写
function find(arr, func) {
for (var i = 0; i < arr.length; i++) {
if (func(arr[i])) {
return arr[i];
}
}
}
- 这里应该真的不需要太多解释。一个很简单的逻辑短路。由于从左开始遍历,那么最先为
true
的肯定符合"第一个满足func
" 这个条件 - 因此,这个时候,我们直接把它
return
出来就行,不需要再进行后续的判断
- 其实,上面我们相当于造了一个数组
filter
方法的轮子。filter
方法本身不难理解,应用场景也很多,建议采用这个写法 - 只需要注意,
filter
方法是返回所有符合条件的,而题目要求返回第一个
function find(arr, func) {
return arr.filter(func)[0];
}