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

簡介

今天吃 array-first 這個包,這個包主要是用來截取一個數組的頭部元素的。git

官方例子:github

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,也有多是其餘類型。但仔細想一想,或許恰好就有這種使用場景吧~ui

相關文章
相關標籤/搜索