FreeCodeCamp筆記之:Finders Keepers

作者: delphuy | 来源:发表于2017-10-23 14:02 被阅读6次

    题目

    写一个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;

    相关文章

      网友评论

        本文标题:FreeCodeCamp筆記之:Finders Keepers

        本文链接:https://www.haomeiwen.com/subject/ldqauxtx.html