Open WangShuXian6 opened 6 years ago
https://www.npmjs.com/package/crypto-js npm i --save crypto-js
import MD5 from 'crypto-js/md5' import sha256 from 'crypto-js/sha256'
let stringWithMd5=MD5(stringWithKey).toString().toUpperCase()
时间
new Date() //Sat Apr 28 2018 14:59:17 GMT+0800 (CST) +new Date() //1524898762153
Miment https://github.com/noahlam/Miment/blob/master/README-cn.md
npm i miment
import miment from 'miment' miment().format('YYYY/MM/DD hh-mm-ss SSS') // 2018/04/09 23-49-36 568
字符串格式数字转换为数值类型
typeof(1) "number"
typeof('1') "string"
typeof(+'1') "number"
>注意
```javascript
console.log(+'a1')
NaN
console.log(+'1a')
NaN
console.log(+'1')
1
匹配,替换,过滤出
var curry = require('lodash').curry;
var match = curry(function(what, str) { return str.match(what); });
var replace = curry(function(what, replacement, str) { return str.replace(what, replacement); });
var filter = curry(function(f, ary) { return ary.filter(f); });
var map = curry(function(f, ary) { return ary.map(f); });
```javascript
match(/\s+/g, "hello world");
// [ ' ' ]
match(/\s+/g)("hello world");
// [ ' ' ]
var hasSpaces = match(/\s+/g);
// function(x) { return x.match(/\s+/g) }
hasSpaces("hello world");
// [ ' ' ]
hasSpaces("spaceless");
// null
filter(hasSpaces, ["tori_spelling", "tori amos"]);
// ["tori amos"]
var findSpaces = filter(hasSpaces);
// function(xs) { return xs.filter(function(x) { return x.match(/\s+/g) }) }
findSpaces(["tori_spelling", "tori amos"]);
// ["tori amos"]
var noVowels = replace(/[aeiou]/ig);
// function(replacement, x) { return x.replace(/[aeiou]/ig, replacement) }
var censored = noVowels("*");
// function(x) { return x.replace(/[aeiou]/ig, "*") }
censored("Chocolate Rain");
// 'Ch*c*l*t* R**n'
reverse 反转列表,head 取列表中的第一个元素;所以结果就是得到了一个 last 函数(即取列表的最后一个元素),虽然它性能不高。这个组合中函数的执行顺序应该是显而易见的。尽管我们可以定义一个从左向右的版本,但是从右向左执行更加能够反映数学上的含义
var compose = function(f,g) {
return function(x) {
return f(g(x));
};
}
var head = function(x) { return x[0]; };
var reverse = reduce(function(acc, x){ return [x].concat(acc); }, []);
var last = compose(head, reverse);
last(['jumpkick', 'roundhouse', 'uppercut']);
//=> 'uppercut'
var initials = compose(join('. '), map(compose(toUpperCase, head)), split(' '));
initials("hunter stockton thompson");
// 'H. S. T'
HTML实体编码
// HTML实体编码
function escapeHtml(string) { var entityMap = { "&": "&", "<": "<", ">": ">", '"': '"', "'": ''', "/": '/' } return String(string).replace(/[&<>"'\/]/g, function (s) { return entityMap[s] }) }
var string5 = "
<hr>
>使用展开运算符后的数组对象
```javascript
const arr = [...Array(100)].map((_, i) => i);
console.log(arr[0]);
循环对象
for (let optionItem in this.options){ console.log('toggleOptions---optionItem',optionItem) }
日历
const caleandar={ month: new Date().getMonth()+1, // 本月月份 date: new Date().getDate(), // 今日日期 day: new Date().getDay(), // 今日周几 year: new Date().getFullYear(), // 年份 }
var mydate=new Date(); var myyear=mydate.getYear(); var mymonth=mydate.getMonth()+1 //注:月数从0~11为一月到十二月 var mydat=mydate.getDate() var myhours=mydate.getHours() var myminutes=mydate.getMinutes() var myseconds=mydate.getSeconds() var myday=mydate.getDay() //注:0-6对应为星期日到星期六
```javascript
// 获取本月1日周几
const day=new Date(this.caleandar.year,this.caleandar.month-1,1).getDay()
// 获得某月天数
getDaysInOneMonth(year, month) {
month = parseInt(month, 10)
var d = new Date(year, month, 0)
return d.getDate()
}
// 计算该月日期集合
getDaysArray(day,days) {
console.log(day,'',days)
let daysArray=[]
let dayNumber=1
while (day){
daysArray.push('')
day--
}
while (days){
daysArray.push(dayNumber)
dayNumber++
days--
}
return daysArray
}
格式化时间戳
/** * 格式化时间戳 * * 2018/8/1 下午3:21:02 * * @param timestamp * @returns {string} */ export const formatTimestamp = (timestamp) => { let unixTimestamp = new Date(timestamp * 1000) return unixTimestamp.toLocaleString() }
解析url参数
/** * 解析url参数 * @param url * @returns {{}} */ parseURL(url) { let qs = url.split("?") qs = qs[1] ? qs[1] : "" let obj = {} if ('string' !== typeof qs || qs.length === 0) { return obj }
let key = []
let eq = '='
let decode = decodeURIComponent
qs = qs.split("&")
let qsLen = qs.length
for (let i = 0; i < qsLen; ++i) {
let x = qs[i]
let idx = x.indexOf('=')
let k
let v
if (idx >= 0) {
k = decode(x.substring(0, idx))
v = decode(x.substring(idx + 1))
} else {
k = x
v = ''
}
if (key.indexOf(k) === -1) {
obj[k] = v
key.push(k)
} else if (obj[k] instanceof Array) {
obj[k].push(v)
} else {
obj[k] = [obj[k], v]
}
}
return obj
}
<hr>
>获取格林尼治时间
```ts
new Date().toGMTString()
var dt = new Date;
dt.setMinutes( dt.getMinutes() + dt.getTimezoneOffset() ); // 当前时间(分钟) + 时区偏移(分钟)
console.log( "格林尼治时间戳: ", dt.getTime() );
console.log( "用本地时间格式显示: ", dt.toLocaleString() );
JSON 转 formData
function buildFormParams(params) { let formData = new FormData(); for (let name in params) { formData.append(`${name}`, `${params[name]}`); } return formData; }
fetch
const paramsStr = buildFormParams({});
fetch(CouponsApi, {
method: 'POST',
body: paramsStr,
headers: {},
})
.then((res) => {
res.text().then((responseText) => {
const response = JSON.parse(responseText);
console.log('response', response)
const code = response.user_code || ''
});
})
.catch((error) => {
console.warn('error', error)
});
手机号格式验证
isMoblie(phone) { return /^1(3|5|6|7|8|9)[0-9]{9}$/.test(phone) }
将p标签转换为view标签
const brTagReg = /<br>|<br\/>/gi const pLeftTagReg = /<p>/gi const pRightTagReg = /<\/p>/gi
export const fromatPTag = (htmlContent) => {
let string = htmlContent.replace(brTagReg, '')
string = string.replace(pLeftTagReg, '
const a = '
test
111
滚动到页面指定元素 https://gist.github.com/WangShuXian6/e9e37ba8e2a540fcc5b1af7d69966c60 http://jsbin.com/sakayax/1/edit?html,output
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <title>滚动到页面指定元素</title> <style type="text/css"> #target{ position: absolute; top:2000px; width: 100%; background: #49a9ee; } #btn{ position: fixed; top:0; left:0; padding:5px 20px; background: #00a854; } </style> </head> <body> <button type="button" id="btn">scroll</button> <div id="target">Hello world</div> <script> let btn=document.getElementById('btn'); let target=document.getElementById('target');
function animateScroll(element,speed) { let rect=element.getBoundingClientRect(); //获取元素相对窗口的top值,此处应加上窗口本身的偏移 let top=window.pageYOffset+rect.top; let currentTop=0; let requestId; //采用requestAnimationFrame,平滑动画 function step(timestamp) { currentTop+=speed; if(currentTop<=top){ window.scrollTo(0,currentTop); requestId=window.requestAnimationFrame(step); }else{ window.cancelAnimationFrame(requestId); } } window.requestAnimationFrame(step); }
btn.onclick=function (e) { animateScroll(target,50); };
Javascript 工具函数整理
const namespacer = '/';
export default type => type.indexOf(namespacer) === -1 ? camelCase(type) : type .split(namespacer) .map(camelCase) .join(namespacer);
const b=a.slice(1,-1)
console.log(b) // bc
return flag; }
var issafariBrowser = /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent);
}
// Usage getDataUri('/logo.png', function (dataUri) { // Do whatever you'd like with the Data URI! });
console.log(getDateList(-2)) // ["2019-7-2", "2019-7-3"]
<p class="title"></p>