underscore源码解析,filter
filter_.filter(list, predicate, [context])Alias: select遍历 list 中的每个值,返回所有通过 predicate 真值检测的元素所组成的数组。predicate 通过 iteratee 进行转换,以简化速记语法。
12var evens = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });=> [2, 4, 6]
filter.js1234567891011121314import cb from './_cb.js';import each from './each.js';// 返回通过真值测试的所有元素export default function filter(obj, predicate, context) { var results = []; // 改变this指向 predicate = cb(predicate, contex ...
underscore源码解析,find
find_.find(list, predicate, [context])Alias: detect在 list 中逐项查找,返回第一个通过 predicate 迭代函数真值检测的元素值,如果没有元素通过检测则返回 undefined。 如果找到匹配的元素,函数将立即返回,不会遍历整个 list。predicate 通过 iteratee 进行转换,以简化速记语法。
12var even = _.find([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });=> 2
find.js1234567891011121314import isArrayLike from './_isArrayLike.js';// 是否类数组,在01 each 中有展示import findIndex from './findIndex.js';import findKey from './findKey.js';// 返回第一个匹配的结果expor ...
underscore源码解析,_map
map_.map(list, iteratee, [context])Alias: collect通过对 list 里的每个元素调用转换函数(iteratee 迭代器)生成一个与之相对应的数组。iteratee 传递三个参数:value,然后是迭代 index(或 key 注:如果 list 是个 JavaScript 对象是,这个参数就是 key),最后一个是引用指向整个 list。
123456_.map([1, 2, 3], function(num){ return num * 3; });=> [3, 6, 9]_.map({one: 1, two: 2, three: 3}, function(num, key){ return num * 3; });=> [3, 6, 9]_.map([[1, 2], [3, 4]], _.first);=> [1, 3
代码实现1234567891011121314151617import cb from './_cb.js';im ...
underscore源码解析,reduce
reduce_.reduce(list, iteratee, [memo], [context])Aliases: inject, foldl别名为 inject 和 foldl, reduce 方法把 list 中元素归结为一个单独的数值。Memo 是 reduce 函数的初始值,会被每一次成功调用 iteratee 函数的返回值所取代 。这个迭代传递4个参数:memo,value 和 迭代的 index(或者 key)和最后一个引用的整个 list。
如果没有 memo 传递给 reduce 的初始调用,iteratee 不会被列表中的第一个元素调用。第一个元素将取代 memo 参数传递给列表中下一个元素调用的 iteratee 函数。
12var sum = _.reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0);=> 6
代码实现reduce.js1234import createReduce from './_createReduce.js';// ...
underscore源码解析,_each
each_.each(list, iteratee, [context])Alias: forEach遍历 list 中的所有元素,按顺序用每个元素当做参数调用 iteratee 函数。如果传递了 context 参数,则把 iteratee 绑定到 context 对象上。每次调用 iteratee 都会传递三个参数:(element, index, list)。如果 list 是个 JavaScript 对象,iteratee 的参数是 (value, key, list))。返回 list 以方便链式调用。
1234_.each([1, 2, 3], alert);=> alerts each number in turn..._.each({one: 1, two: 2, three: 3}, alert);=> alerts each number value in turn..
注意:集合函数能在数组,对象,和类数组对象,比如 arguments, NodeList 和类似的数据类型上正常工作。 但是它通过鸭子类型工作,所以要避免传递带 ...
windows 搭建 kodbox 私人云盘
准备下载可道云服务器端
下载 - 可道云-私有云存储&协同办公平台_企业网盘_企业云盘_网盘_云盘 (kodcloud.com)
下载phpStudy
小皮面板(phpstudy) - 让天下没有难配的服务器环境! (xp.cn)
搭建安装软件打开phpstudy面板,选择软件管理
搭建kodbox需要使用 php + MySQL + Nginx + Redis 查看是否有未安装的软件,点击安装
配置软件点击php的设置,在扩展组件中打开redis插件
配置数据库密码
配置nginx
将下载好的kodbox 服务端解压到搭建的位置,同时打开nginx配置,配置网站的目录以及启动端口
启动服务
KodBox配置在浏览器中打开 localhost: + 配置的nginx端口
如果有配置有问题,注意检查问题项
点击下一步
设置管理员密码,点击确定即可
完成登录账号
app可直接在官网下载,根据提示连接即可
注意事项mysql 冲突如果本机以前安装过mySQL ,phpStudy中的mySQL有可能会启动不起来服务
可以尝试更换端口,如果还是无效可以尝试关闭或删除原有 ...
JS算法学习(二分查找)
算法(第四版)读书笔记
使用JavaScript实现二分查找
123456789101112131415161718192021222324252627282930// 从给定数组中查找出指定元素的索引let arr = [1,5,6,7,9,10]function getCurrentIndex(arr,current) { let newArr = [...arr] // 1.数组需要有序 newArr.sort((a,b)=> a-b) // 当前的索引 let cIndex = 0 // 区间的结束索引 let endIndex = newArr.length - 1 while(cIndex <= endIndex) { let middleIndex = Math.floor((cIndex + endIndex) / 2) // 如果目标值比中间值小,那就在左侧 if(current < newArr[middleIndex]) { ...
uniapp开发常用库以及使用
一些个人在uniapp 开发中常用的库
请求库luch-request (quanzhan.co)
基于Promise开发的uni-app跨平台请求库
UI框架uView 2.0
1.0 版与 2.0 不兼容
支持uniapp的一个比较完备的ui框架深度使用后不推荐,一些组件封装比较浅层,需要额外封装,或封装的不好,增加额外心智负担,并且引入必须完整引入2.0 甚至移除了一些 1.0 中已有的功能
uni-ui
Dcloud官方维护的ui组件集合,官方背书,稳定更新兼容性有保证,每个组件都可支持单独引用,一定程度上减少打包体积
图表组件uCharts
uniapp 移动端支持比较友好的图表组件
小程序登录以及获取用户openID
小程序登录流程以及获取用户信息的步骤
1. 获取临时登录凭证前端调用 wx.login 获取 code,通过 code 在后端换取 openId 等信息
123456wx.login({ success (res) { const { code } = res // code 为 临时登录凭证,有效期为 5 分钟 }})
2. 后端调用 微信 登录接口接口地址请求方式:GET
1https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
请求参数
属性
类型
默认值
必填
说明
appid
string
是
小程序 appId
secret
string
是
小程序 appSecret
js_code
string
是
登录时获取的 code
grant_type
s ...
Hexo 搭建博客
记录一下 hexo 搭建个人博客 以及 绑定 github 绑定域名的整体流程
hexo 搭建博客Hexo
环境准备nodejsgit首次使用 git 时,需要设置用户
12git config --global user.email "xxx"git config --global user.name "xxx"
生成 ssh-key
1ssh-keygen -t rsa -C "email"
githubgithub 已经不支持 输入用户密码校验了,所以需要将 编写博客的对应电脑上的 ssh-key 公钥 绑定到 github 上
一般在 c 盘 用户 下 .ssh 文件夹中
开始搭建安装 hexo1npm install -g hexo-cli
初始化1hexo init 文件夹名
运行1hexo s
新建文章1hexo new name
文章的位置是在 source 下的 _posts 中,也可直接将 markdown 文件复制进去,一些标准配置
1234567891011---title: ...