一天一个仿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;
}
posted @ 2022-06-29 20:36  Dont  阅读(49)  评论(0编辑  收藏  举报