题目
写一个function,它遍历数组arr,并返回数组中第一个满足func返回值的元素。举个例子,如果arr为[1, 2, 3],func为function(num) {return num === 2; },那么find的返回值应为2。如果你被卡住了,记得开大招 Read-Search-Ask。尝试与他人结伴编程、编写你自己的代码。
这是一些对你有帮助的资源:
Array.filter()
function find(arr, func) {
var num = 0;
return num;
}
find([1, 2, 3, 4], function(num){ return num % 2 === 0; });
find([1, 3, 5, 8, 9, 10], function(num) { return num % 2 === 0; }) 应该返回 8。
find([1, 3, 5, 9], function(num) { return num % 2 === 0; }) 应该返回 undefined。
思路
1.看完了意思应该是从arr 中找到满足func的逻辑的数字,如果找不到,应该返回undefined;
2.这个比较简单,上for循环应该可以解决;
解答
function find(arr, func) {
var num = 0;
for (var i=0;i<arr.length;i++){
if (func(arr[i])){
num = arr[i] ;
break; // 依题目要求是返回数组中第一个满足的元素,因此找到第一个值之后记得强制跳出循环
}
}
if (!num){ // 当num 不存在时应该返回undefined
return undefined;
}
return num;
}
find([1, 2, 3, 4], function(num){ return num % 2 === 0; });
-
刚开始脚本写好之后,执行没有报错,但也没有通过,崩溃之。
题目要求返回8,但我返回的是4,这个明显很莫名其妙,数组中并没有4;
image.png -
在脚本、题目里找了好半天,发现自己漏了一个题目的要求,找到第一个符合条件的值,于是在for里加上了强制跳出,果然OK;
网友评论