Finders Keepers

此題題意如下:

  這題的要求就是要寫一個函數,此函數將訪問array(第1個參數),並將符合某給定或已知函數(第2個參數)的第1個元素回傳

  function find(arr, func) {
  var num = 0;
  num = arr.filter(function(emt)
  {
     return (func(emt)) ? emt : undefined ;   
  });
  return (num.length)? num[0] : undefined;
}

find([1, 2, 3, 4], function(num){ return num % 2 === 0; });
find([1, 3, 5, 8, 9, 10], function(num) { return num % 2 === 0; });

Solution:

使用filter函數來訪問array裡面每個元素,並將符合的元素回傳,不符合回傳未定義-undefined,如果該array有符合函數條件的元素,則回傳包含符合的元素的array ; 如果該array沒有符合的元素,則要回傳的array是空的(empty),回傳空array(arr = [];),然後題目要求如果找不到符合元素則回傳undefined,而因為沒有符合的元素時回傳空array,因為空array的長度為 0 ,故以array.length作為array是否為空array的判斷條件,依據條件判斷,如果array不是空的,則回傳第1個元素(index = 0),如果為空,則回傳undefined,以符合題目要求



P.S. / Reference:  filter 方法用來叠代一個數組,並且按給出的條件過濾出符合的元素。filter 方法傳入一個回調函數,這個回調函數會攜帶一個參數,參數為當前叠代的項(我們叫它 val )。 回調函數返回 true 的項會保留在數組中,返回 false 的項會被過濾出數組
          Array.prototype.filter()

results matching ""

    No results matching ""