窗外一切漆黑,但是无妨,我已有适应黑暗的眼睛
文章目录
- 前言
- 业务算法
- 打乱数组
- 随机生成指定长度的字符串
- 获取数组间的交集、并集和差集
- 求数组成员的最大值、最小值和平均值
- reduce小知识
- 尾声
前言
算法是一切程序设计的灵魂和基础
业务算法
web前端程序设计离不开业务算法
,业务算法
是前端的灵魂。此模块会列举出常用的业务算法。
打乱数组
最常见的是使用 Array.prototype.sort 方法
sort函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前
,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。在排序后的数组中 a 应该出现在 b 之后
var arr = [1,2,3,4,5,6,7];
arr.sort(function() {
return (0.5-Math.random());
});
console.log(arr); // 随机数
通过sort回调函数传入随机数来进行随机排序
随机生成指定长度的字符串
function randomString(n) {
// 将随机范围设置成小写字母和数字
// 你也可以加上大写字母和特殊字符
let str = 'abcdefghijklmnopqrstuvwxyz0123456789';
let ret = '',
i = 0,
len = str.length;
for (i = 0; i < n; i++) {
ret += str.charAt(Math.floor(Math.random() * len));
}
return ret;
}
console.log(randomString(8)) // 随机生成8位字符串
限定一个随机范围,通过随机获取这个范围内的成员,进行叠加实现随机生成指定长度的字符串的效果。
获取数组间的交集、并集和差集
并集:把A与B合并在一起组成的集合
交集:设A,B是两个集合,由所有属于集合A且属于集合B的元素所组成的集合
差集:设A,B是两个集合,由所有属于A且不属于B的元素组成的集合
var array1 = [1,2,3]
var array2 = [2,3,4,5]
// 并集
// Set数据结构不存在重复元素,所以将两个数组全部扩展开来,会实现并集
let union = new Set([...array1, ...array2]);
console.log(...union) // 1,2,3,4,5
// 交集
// 通过筛选函数实现两个数组之间都拥有的成员集合
let intersect = new Set([...array1].filter( x => new Set(array2).has(x)));
console.log(...intersect) // 2,3
// 差集
// 计算array1数组拥有的成员且满足array2数组不存在该成员。 实现array1的差集
// 如果需要计算array2的差集,换个位置就可以
let difference = new Set([...array1].filter(x => !new Set(array2).has(x)));
console.log(...difference) // 1
- 并集:将所有数组扩展开来,再通过Set对象去重
- 交集:通过filter函数遍历筛选全部集合都存在的成员
- 差集:以集合1为差集主体,通过filter函数遍历筛选另一个集合不存在的成员
求数组成员的最大值、最小值和平均值
这个就很简单啦,O(∩_∩)O
Array.prototype.max = function(){
var max = Math.max.apply(null,this)
return max
}
var arr=[1,2,3,4,5]
// 最大值
arr.max() // 5
Array.prototype.min = function(){
var min = Math.min.apply(null,this)
return min
}
var arr=[1,2,3,4,5]
// 最小值
arr.min() // 1
// 平均值
Array.prototype.average = function () {
let sum = this.reduce((sum, count) => {
return sum + count
})
return sum / this.length
}
arr.average() // 3
reduce小知识
reduce()
方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
total:必需。初始值, 或者计算结束后的返回值。没有设置initialValue默认为第一个成员
currentValue: 必需。当前元素
currentIndex: 可选。当前元素的索引
arr: 可选。当前元素所属的数组对象。
尾声
本文到这里就结束了,以后有新的发现还会补充。谢谢大家的用心观看,O(∩_∩)O。