【大吉大利 今晚吃包】002 - array-first

简介

今天吃 array-first 这个包,这个包主要是用来截取一个数组的头部元素的。

官方例子:

var first = require('array-first');

first(['a', 'b', 'c', 'd', 'e', 'f']);
//=> 'a'

first(['a', 'b', 'c', 'd', 'e', 'f'], 1);
//=> 'a'

first(['a', 'b', 'c', 'd', 'e', 'f'], 3);
//=> ['a', 'b', 'c']

目录结构

emm,觉得小包的目录结构都差不多的,略。

主要代码

var isNumber = require('is-number');
var slice = require('array-slice');

/**
 * @param {Array<any>} arr 数组
 * @param {number}     num 截取数量
 */
module.exports = function arrayFirst(arr, num) {
  if (!Array.isArray(arr)) {
    throw new Error('array-first expects an array as the first argument.');
  }

  if (arr.length === 0) {
    return null;
  }

  var first = slice(arr, 0, isNumber(num) ? +num : 1);
  if (+num === 1 || num == null) {
    return first[0];
  }
  return first;
};

代码相信各位都看得懂,而核心代码主要是 slice(arr, 0, isNumber(num) ? +num : 1); 这一句,而这其中用到了一个 array-slice 模块,这个模块跟 Array.splice 的作用一样,唯一区别是不会改变源数组,类似 String.splice

单元测试

单元测试用的 mocha,测试脚本就不贴了,略。

总结

这个包比较小,但很符合包的定义:first,只截取头部的元素,美中不足的点是当 num 为1时,返回的是数组的第一个元素,这就导致返回的结果有可能是Array,也有可能是其他类型。但仔细想想,或许刚好就有这种使用场景吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值