基本算法 - 数学

最大公约数、最小公倍数

最大公约数 gcd

1
const gcd = (a, b) => a ? gcd(b%a, a) : b;

最小公倍数 lcm

依赖于最大公约数 gcd

1
const lcm = (a, b) => a * b / gcd(a,b);

最大值 / 最小值

最大值 max ,输出给定所有数字的最大数字,如果没有参数,则返回 -Infinity

1
2
3
4
5
6
7
8
9
10
11
12
13
const max = (...args) => {
if(args.length === 0) return -Infinity;
let _max_ = args[0];
for(const a of args) {
_max_ = _max_ > a ? _max_ : a;
}
return _max_;
}

// use
max(1,2,3,4,5,890,34,12,56757,12) // 56757
// or
max(...[1,2,3,4,5,890,34,12,56757,12]) // 56757

最小值 min ,输出给定所有数字的最小数字,如果没有参数,则返回 Infinity

1
2
3
4
5
6
7
8
9
10
11
12
13
const min = (...args) => {
if(args.length === 0) return Infinity;
let _min_ = args[0];
for(const a of args) {
_min_ = _min_ < a ? _min_ : a;
}
return _min_;
}

// use
min(1,2,3,4,5,890,34,12,56757,12) // 1
// or
min(...[1,2,3,4,5,890,34,12,56757,12]) // 1

检查 存在性

existy 检查数据是否 存在 ,即是否不等于 nullundefined

1
2
3
const existy = x => x != null
// or
// const existy = x => x != undefined

注:松散不等于 != 会将 nullundefined 判定为 一个东西,即 null == undefined

判断是否为 truthy

JavaScript 中,truthy(真值)指的是在布尔值上下文中,转换后的值为 true 的值。被定义为假值以外的任何值都为真值。(即所有除 false0-00n""nullundefinedNaN 以外的皆为真值)。

1
const truthy = x => x !== false && x != null && x !== 0  && x !== 0n && x === x && x !== "";

falsy 函数同理:

1
const falsy = x => x === false || x == null || x === 0 || x === 0n || x === "" || x !== x ;

生成随机数

随机生成 $m-n$ 之间的整数值

1
2
3
4
// 保证 m < n
function random(m, n) {
return Math.round(Math.random() * (n-m) + m);
}

斐波那契数列 - 生成器版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function* createFibonacci() {
let a = 1, b = 1;
while(1) {
yield a;
b = a+b;
a = b-a;
}
}

let fibonacci = createFibonacci();
fibonacci.next() // { value: 1, done: false }
fibonacci.next() // { value: 1, done: false }
fibonacci.next() // { value: 2, done: false }
fibonacci.next() // { value: 3, done: false }
fibonacci.next() // { value: 5, done: false }
fibonacci.next() // { value: 8, done: false }
fibonacci.next() // { value: 13, done: false }
JavaScript 算法
作者:Kart Jim
链接:https://github.com/can-dy-jack/delicate/2022/07/07/algorithm/base/
来源:Hexo
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 许可协议。著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
长风破浪会有时,直挂云帆济沧海