窗外一切漆黑,但是无妨,我已有适应黑暗的眼睛



文章目录


  • 前言
  • 业务算法
  • 打乱数组
  • 随机生成指定长度的字符串
  • 获取数组间的交集、并集和差集
  • 求数组成员的最大值、最小值和平均值
  • 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。


前端开发当中常用的算法_字符串_02