snippet-js
线上sandbox地址(这玩意做demo预览,很好用):https://codesandbox.io/u/my19940202/sandboxes
separate operator ...操作符日常用法
从一个有大量key的obj中获取部分key,相对快捷(浅拷贝,js 原生操作基本都是浅拷贝)
let a = {a:123, b:123, c:1, d:90, e: 123, x: 123, y: 90}
let {x, y, ...info} = a
console.log(info)
// {a:123, b:123, c: 1, d:90, e: 123}
typescript 参数是函数的情况下类型定义怎么写
// filter函数的参数不定, 所以写成...args: any[]
// 函数 ...args: any[]) => any
export function setFilter(filterName: string,
filterFunc: (...args: any[]) => any) {
if (filter.hasFilter(filterName)) {
filter.delFilter(filterName);
}
filter.setFilter(filterName, filterFunc);
}
Obj中根据情况添加字段 快捷方式(不用在写if 了)
var rich = true;
var man = {
name: 'hello world',
gender: 'male',
...{
rich ? {car: 'bmw'}: null
}
};
动态插入js
var hm = document.createElement('script');
var time_stamp = (new Date()).getTime();
hm.src = '//hm.baidu.com/hm.js?' + time_stamp;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(hm, s);
生成随机字符串(长度自定义)
var randomWord = function (randomFlag, min, max){
var str = "",
range = min,
pos = 0,
arr = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
// 随机产生
if(randomFlag) {
range = Math.round(Math.random() * (max - min)) + min;
}
for(var i = 0; i < range; i++){
pos = Math.round(Math.random() * (arr.length - 1));
str += arr[pos];
}
return str;
}
// 32位随机字符串
uid = randomWord(false, 32);
// 1到10位随机字符串
uid = randomWord(true, 1, 10);
cookie获取
function getCookie(name) {
var arr, reg = new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if (arr = document.cookie.match(reg)) {
var value = unescape(arr[2]);
return value;
}
else {
return '';
}
}
生成1-n的数组
var numbersArray = [] , max = 100;
for( var i=1; numbersArray.push(i++) < max;);
返回数组指定范围的随机一个
var arr = [1,2,3,4,5,6,7,8];
var min = 0;var max = arr.length;
var index = Math.floor(Math.random() * (max - min + 1)) + min;
数组 unique去除多余元素
Array.prototype.unique = function () {
var uniqueObj = {};
var newArr = [];
for (var i = 0; i < this.length; i++) {
if (uniqueObj[this[i]]) {
} else {
newArr.push(this[i]);
uniqueObj[this[i]] = true;
}
}
return newArr;
}
数组reverse
var arr = [1,2,4,5,6,7,8];
var arr_reverse = [];
while (arr.length) {
arr_reverse.push(arr.pop());
}
console.log(arr_reverse)
js quick sort
function quicksort(a, left, right){
var i, j, temp;
i = left;
j = right;
temp = a[left];
if(left > right) return;
while(i!= j){
while(a[j] >= temp && j > i) j--;
if(j > i) a[i++]= a[j];
while(a[i] <= temp && j > i) i++;
if(j > i) a[j--]= a[i];
}
a[i]=temp;
quicksort(a, left, i-1);
quicksort(a, i+1, right);
}
原生手写ajax jsonp等
// 有空去补充
js前端实验框架
正在开发中 还待完成
js前端日志框架
// 有空去补充
gulp 压缩图片的简单配置
const gulp = require('gulp');
const imagemin = require('gulp-imagemin');
const pngquant = require('imagemin-pngquant');
var srcImage = 'static/*/*';
var dstImage = 'dist';
gulp.task('default', function() {
var jpgmin = imagemin({
accurate: true,//高精度模式
quality: "medium",//图像质量:low, medium, high and veryhigh;
method: "smallfry",//网格优化:mpe, ssim, ms-ssim and smallfry;
min: 50,//最低质量
loops: 0,//循环尝试次数, 默认为6;
progressive: false,//基线优化
subsample: "default"//子采样:default, disable;
}),
pngmin = pngquant({
optimizationLevel: 3
});
gulp.src(srcImage)
.pipe(imagemin({
use: [jpgmin, pngmin]
}))
.pipe(gulp.dest(dstImage));
});
原生js 实现复制功能 http://jsrun.net/JYhKp
// 对应的输入框 主要通过execCommand实现功能
let inputText = document.getElementById('shareInput');
let currentFocus = document.activeElement;
inputText.focus();
inputText.setSelectionRange(0, inputText.value.length);
document.execCommand('copy', true);
currentFocus.focus();
setTimeout传参方式
// 传统的方式
setTimeout(function (x, y) {
console.log(x, y);
}, 1000)
// 新方式
function a(x, y) {
console.log(x, y) // 2 3
}
setTimeout(a, 1000, 2, 3)