webpack系列-进阶
编写一个简单的Loader
参考文档
loader api: https://webpack.docschina.org/api/loaders/
resolveLoader: https://webpack.docschina.org/configuration/resolve/#resolveloader
loader api: https://webpack.docschina.org/api/loaders/
resolveLoader: https://webpack.docschina.org/configuration/resolve/#resolveloader
在命令式编程中,我们按部就班地编写程序代码,详细描述要完成的事情以及完成的顺序。
函数式编程:
// 命令式编程与函数式编程区别
// 例如,迭代数组
// 命令式编程
const printArray = function(array) {
for (var i = 0; i < array.length; i++) {
console.log(array[i])
}
}
printArray([1, 2, 3, 4, 5])
// 函数式编程
const forEach = function(array, action) {
for (var i = 0; i < array.length; i++) {
action(array[i])
}
}
const logItem = function(item) {
console.log(item)
}
forEach([1, 2, 3, 4, 5], logItem)
map
、filter
、reduce
是**JavaScript
函数式编程的基础**。
《学习JavaScript数据结构与算法(第3版)》
迭代数组,从最后一位开始并将当前位置和一个随机位置进行交换。这个随机位置比当前位置小。这样,这个算法可以保证随机过的位置不会再被随机一次(洗扑克牌的次数越多,随机效果越差)。
function shuffle(array) {
for (let i = array.length - 1; i > 0; i--) {
const randomIndex = Math.floor(Math.random() * (i + 1));
[array[randomIndex], array[i]] = [array[i], array[randomIndex]]
}
return array;
}
《学习JavaScript数据结构与算法(第3版)》
时间复杂度:O(n)
顺序或线性搜索是最基本的搜索算法。它的机制是,将每一个数据结构中的元素和我们要找的元素做比较。顺序搜索是最低效的一种搜索算法。
const DOSE_NOT_EXIST = -1;
function sequentialSearch(array, value, equalsFn = defaultEquals) {
for (let i = 0; i < array.length; i++) { // 迭代整个数组
if (enqualsFn(value, array[i])) { // 进行比较
return i; // 找到返回索引
}
}
return DOSE_NOT_EXIST; // 没有找到
}
function defaultEquals(a, b) {
return a === b;
}
《学习JavaScript数据结构与算法(第3版)》
算法动态排序效果: https://www.toptal.com/developers/sorting-algorithms#
时间复杂度:O(n^2)