安装 bash $ npm i rabbit-toolkit
1
快速上手 ts import * as rabbit from 'rabbit-toolkit'
const result = rabbit. fibonacci ( 10 )
console. log (result) //
1 2 3 4
API 判断一个数是否为奇数 ts /**
* 判断一个数是否为奇数
* @param num 要判断的数字
* @return {Boolean} 奇数返回true,偶数返回false
*/
export function isPrime ( num : number ) : boolean {
return num % 2 === 1
}
1 2 3 4 5 6 7 8
计算斐波那契数列指定位置的数值 ts /**
* 计算斐波那契数列指定位置的数值
* @param position 斐波那契数列的位置
* @returns {Number} 该位置的斐波那契数值
*/
export function fibonacci ( position : number ) : number {
let index = 2 ,
start = 1 ,
end = 1
while (index < position) {
end = start + (start = end)
++ index
}
return end
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
计算一个数的阶乘 ts /**
* 计算一个数的阶乘
* @param {Number} n 要计算阶乘的数
* @return {Number} 阶乘结果
*/
export function factorial ( n : number ) : number {
return n === 0 || n === 1 ? 1 : n * factorial (n - 1 )
}
1 2 3 4 5 6 7 8
判断年份是否是闰年 ts /**
* 判断年份是否是闰年
* @param {Number} year 要判断的年份
* @return {Boolean} 闰年返回true,平年返回false
*/
export function isLoopYear ( year : number ) : boolean {
return (year % 4 === 0 && year % 100 !== 0 ) || year % 400 === 0
}
1 2 3 4 5 6 7 8
获取一个数的指定二进制位的值 ts /**
* 获取一个数的指定二进制位的值
* @param {Number} num 求二进制的数
* @param {Number} index 需要二进制位的索引位置
* @return {Number} 该二进制位上的bit值,1或0
*/
export function bit ( num : number , index : number ) : number {
return num & ( 1 << index) ? 1 : 0
}
1 2 3 4 5 6 7 8 9
获取一个数的指定二进制位的值 ts /**
* 获取一个数的指定二进制位的值
* @param {Number} num 求二进制的数
* @param {Number} index 需要二进制位的索引位置
* @return {Number} 该二进制位上的bit值,1或0
*/
export function bit ( num : number , index : number ) : number {
return num & ( 1 << index) ? 1 : 0
}
1 2 3 4 5 6 7 8 9
将一个数转换成指定位数的二进制 ts /**
* 将一个数转换成指定位数的二进制,同时返回字符串形式和数组形式的二进制结果
* @param {Number} num 需要求二进制的目标值
* @param {Number} bits 需要展示多少位的二进制
* @return {Array} 返回字符串形式和数组形式的二进制结果
*/
export function bin ( num : number , bits : number ) : ( string | number [])[] {
let tmp = 0 ,
r1 = '' ,
r2 = []
for ( let i = bits - 1 ; i >= 0 ; i -- ) {
tmp = bit (num, i)
r1 += tmp
r2. push (tmp)
}
return [r1, r2]
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
生成杨辉三角形的字符串展示 ts /**
* 生成杨辉三角形的字符串展示
* @param {Number} ROW 杨辉三角的行数
* @param {Number} len 每个数字占的宽度,默认为4
* @param regular 正三角形:true(默认),直角三角形:false
* @param {String} align 对齐方式:left、center(默认方式)、right
* @return {String} 返回杨辉三角的字符串展示
*/
export function YanhuiTriangle ( ROW : number , len : number = 4 , regular : boolean = true , align : string = 'center' ) {
let rows = ROW
let cols = 2 * ROW - 1
let center = Math. floor (( 2 * ROW - 1 ) / 2 )
// 初始化数组,填充初始值0
let arr = Array. from ({ length: ROW }, () => Array (cols). fill ( 0 ))
// 1、从中心位置向两边边缘位置填充1
for ( let i = 0 ; i < rows; i ++ ) {
for ( let j = 0 ; j < 1 ; j ++ ) {
arr[i][center - i] = 1
arr[i][center + i] = 1
}
}
// 2、从中间位置开始对两边的数进行求和操作,该行该列的数 = 前一行该列的前一行 + 前一行该列的后一行
for ( let i = 0 ; i < rows; i ++ ) {
for ( let j = 0 ; j < i; j ++ ) {
arr[i][center - j] = arr[i - 1 ][center - j - 1 ] + arr[i - 1 ][center - j + 1 ]
arr[i][center + j] = arr[i - 1 ][center + j - 1 ] + arr[i - 1 ][center + j + 1 ]
}
}
// 3、根据参数格式化并打印结果
let stringTemplate = ''
for ( let i = 0 ; i < rows; i ++ ) {
for ( let j = 0 ; j < 2 * rows - 1 ; j ++ ) {
stringTemplate +=
arr[i][j] === 0
? regular
? convertFixedLength ( '' , len, align)
: ''
: convertFixedLength (arr[i][j]. toString (), len, align)
}
stringTemplate += ' \n '
}
return stringTemplate
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
将字符串转换为固定长度的格式 ts /**
* 根据指定长度和对齐方式,将字符串转换为固定长度的格式
* @param {String} str 源字符串
* @param {Number} len 字符串固定长度
* @param {String} align 对齐方式:left、center、right
* @return {String} 加工后的字符串
*/
export function convertFixedLength ( str : string , len : number , align : string = 'left' ) : string {
let remain = len - str. length
switch (align) {
case 'left' :
return str + fillSpace (remain)
case 'right' :
return fillSpace (remain) + str
case 'center' :
return fillSpace (Math. floor (remain / 2 )) + str + fillSpace (Math. ceil (remain / 2 ))
default :
return str + fillSpace (remain)
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
生成指定长度的空格字符串 ts /**
* 生成指定长度的空格字符串
* @param {Number} len 需要的空格长度
* @return {String} 生成的空格字符串
*/
export function fillSpace ( len : number ) : string {
if (len < 0 ) return ''
let space = ''
for ( let i = 0 ; i < len; i ++ ) space += ' '
return space
}
1 2 3 4 5 6 7 8 9 10 11