一天一個仿lodash函數實現-tail、take

tail是很簡單的函數方法了,就是返回數組除了開頭元素外的數組。

take則是從數組中挑出指定個數的元素組成數組。
takeRight則是往後開始挑元素。

takeWhile則是根據傳入的函數來判斷,直到函數返回falsey時,結束挑選。

function tail(arr){
  return arr.slice(1)
}

function take(arr, n=1){
  return arr.slice(0, n)
}

function takeRight(arr, n=1){
  if(n===0) {
    return []
  }
  return arr.slice(-n);
}

function takeRightWhile(arr, predicate){
  if(!arr.length) return [];
  let index = arr.length - 1;
  const result = [];
  while(index>=0){
    if(!predicate(arr[index], index, arr)) {
      break;
    }
    result.unshift(arr[index]);
    index--;
  }
  return result;
}

function takeWhile(arr, predicate){
  if(!arr.length) return [];
  let index = 0;
  const result = [];
  while(index<arr.length){
    if(!predicate(arr[index], index, arr)) {
      break;
    }
    result.push(arr[index]);
    index++;
  }
  return result;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章