前端开发当中常用的算法

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

文章目录

  • 前言
  • 业务算法
    • 打乱数组
    • 随机生成指定长度的字符串
    • 获取数组间的交集、并集和差集
    • 求数组成员的最大值、最小值和平均值
      • reduce小知识
  • 尾声


前言

算法是一切程序设计的灵魂和基础

前端开发当中常用的算法_第1张图片


业务算法

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。


你可能感兴趣的:(JavaScript,算法)