源码阅读系列01----is-sorted【10.26】

源码阅读系列一、is-sorted
1、概述

is-sorted是一个精美小巧的npm库,核心代码仅有11行,其功能是检查数组是否已排序,在npm上周下载量为855,很火爆。npm仓库:https://www.npmjs.com/package/is-sorted
在这里插入图片描述

2、源码解析

阅读源码之前养成一个习惯,先从package.json文件读起。通过阅读可知,is-sorted库没有引入其他库。
以下为核心代码:

// 默认为正序排序,从小到大
function defaultComparator (a, b) {
  return a - b
}
// 两个参数, array必须为数组;
// comparator为函数,可不传,若为function (a, b) { return b - a }),功能为检测反序
// module.exports导出函数
module.exports = function checksort (array, comparator) {
  // Array.isArray检测是否为数组,如果不是数组,抛出错误
  if (!Array.isArray(array)) throw new TypeError('Expected Array, got ' + (typeof array))
  // 如果comparator不为空,则为传入的函数。否则为defaultComparator正序检测函数
  comparator = comparator || defaultComparator

  for (var i = 1, length = array.length; i < length; ++i) {
    // 正序检测函数为a-b,array[i-1]必定小于array[i];
    // 反序函数为b-a,array[i]必定小于array[i-1]
    if (comparator(array[i - 1], array[i]) > 0) return false
  }

  return true
}

node中使用is-sorted库:

// 1、如果为空白文件夹:npm  init -y,创建package.js文件;
// 2、安装该库:npm i is-sorted
// 3、代码中使用
// 4、运行改程序:node index.js
var isSorted = require('is-sorted')

console.log(isSorted([1, 2, 3, 4, 5]));        // true
console.log(isSorted([1, 2, 3, 9, 4]));        // false
console.log(isSorted([5, 4, 3, 2, 1]));        // false
console.log(isSorted('aaaa'));                 // Expected Array, got string
console.log(isSorted([4,3,2,1], function (a, b) { return b - a })); // true
3、总结

is-sorted库,可谓是短小精悍,其实在开发中,验证数组是否排序,我们都可以写出来,搞个函数。但是该库作者把这个功能封装了一下放到npm,意外火爆,这值得我们学习。代码层次我的理解是,既然判断是否排序,应不管是正序还是反序,都应返回true,如果是我来做的话,会在defaultComparator函数中判断两种情况,分别为正序和反序。当然这只是我一隅之见,若是有不对之处,希望大家多多指出。

。。诗。。
。。远方。。

内容持续更新中…
但行好事,莫问前程。
lvan学习笔记-文章内容仅个人观点
2021.10.26

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值