窗外一切漆黑,但是無妨,我已有適應黑暗的眼睛
文章目錄
- 前言
- 業務演算法
- 打亂陣列
- 隨機生成指定長度的字串
- 獲取陣列間的交集、并集和差集
- 求陣列成員的最大值、最小值和平均值
- 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,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/258197.html
標籤:其他
上一篇:判斷JS資料型別的四種方法
下一篇:用web撰寫100以內的加法
