Skip to content

Instantly share code, notes, and snippets.

@Visionchen
Last active May 24, 2019 01:40
Show Gist options
  • Select an option

  • Save Visionchen/a7dfff5d24d4f6638f9668d85ae23c4e to your computer and use it in GitHub Desktop.

Select an option

Save Visionchen/a7dfff5d24d4f6638f9668d85ae23c4e to your computer and use it in GitHub Desktop.
啦啦啦...
### 递归拷贝
```javascript
var clone = function(obj) {
var newObj = obj.constructor === Array ? [] : {};
for( var key in obj) {
newObj[key] = typeof obj[key] === 'Object' ? clone(obj[key]) : obj[key];
}
return newObj;
}
```
### 获取url?后面的参数值
```JavaScript
function getParams(name) {
var params = location.search.substring(1).split('&');
for(var i in params) {
var ps = params[i].split('=');
if(ps[0] === name) {
return ps[1];
}
}
}
export function getUrlParam(name) {
var _s = window.location.search;
if (!_s) return '';
_s = _s.substr(1);
var _arr = _s.split('&');
var _t = null;
for (var i = 0; i < _arr.length; i++) {
_t = _arr[i].split('=');
if (_t[0] == name) {
return _t.length > 1 ? _t[1] : '';
}
}
return '';
}
export function getUrlKey(name) {
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ""])[1].replace(/\+/g, '%20')) || null;
}
```
### 利用json对象转化为字符串的方法
```javascript
var clone2 = function(v) {
return (
JSON.parse(JSON.stringify(v))
);
}
```
### 毫秒转换为年月日时分秒
```javascript
function timestampToTime(timestamp) {
var date = new Date(timestamp * 1000); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
Y = date.getFullYear() + '-';
M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
D = change(date.getDate()) + ' ';
h = change(date.getHours()) + ':';
m = change(date.getMinutes()) + ':';
s = change(date.getSeconds());
return Y + M + D + h + m + s;
}
function change(t) {
if (t < 10) {
return "0" + t;
} else {
return t;
}
}
```
### 模糊查询(表格)
```javascript
$("#filterName").keyup(function() {
$("table tbody tr").hide();
$(".inv_neirong").filter(":contains('" + ($(this).val()) + "')").parent().show();
})
```
### 获取日期之间的日期数组
```javascript
Date.prototype.format = function() {
var s = '';
var mouth = (this.getMonth() + 1) >= 10 ? (this.getMonth() + 1) : ('0' + (this.getMonth() + 1));
var day = this.getDate() >= 10 ? this.getDate() : ('0' + this.getDate());
s += this.getFullYear() + '-'; // 获取年份。
s += mouth + "-"; // 获取月份。
s += day; // 获取日。
return(s); // 返回日期。
};
function getAll(begin, end) {
var dateArr=[];
var ab = begin.split("-");
var ae = end.split("-");
var db = new Date();
db.setUTCFullYear(ab[0], ab[1] - 1, ab[2]);
var de = new Date();
de.setUTCFullYear(ae[0], ae[1] - 1, ae[2]);
var unixDb = db.getTime();
var unixDe = de.getTime();
for(var k = unixDb; k <= unixDe;) {
dateArr.push((new Date(parseInt(k))).format());
k = k + 24 * 60 * 60 * 1000;
}
console.log(dateArr);
}
```
### URL ?后的查询参数
```javascript
function query(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = decodeURI(window.location.search).substr(1).match(reg);
if(r != null) return unescape(r[2]);
};
```
### 数组去重
```javascript
function unique(arr){
  var res =[];
  var json = {};
  for(var i=0;i<arr.length;i++){
    if(!json[arr[i]]){
      res.push(arr[i]);
      json[arr[i]] = 1;
    }
  }
  return res;
}
或者
Array.from(new Set(arr))
```
### 去除左右两端的空格
```javascript
function trim(str) {
return str.replace(/(^\s*)|(\s*$)/g, "");
}
```
### 数字输入框
```javascript
function clearNoNum(obj) {
obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); //只能输入两个小数
if(obj.value.indexOf(".") < 0 && obj.value != "") { //以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
obj.value = parseFloat(obj.value);
}
if(obj.value == 'NaN') {
obj.value = 1;
}
}
```
### 冒泡排序
```javascript
function bubbleSort(arr) {
var len = arr.length;
for (var i = 0; i < len; i++) {
for (var j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j+1]) { //相邻元素两两对比
var temp = arr[j+1]; //元素交换
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
```
### 生成随机颜色值
```javascript
function getRandomColor () {
const rgb = []
for (let i = 0 ; i < 3; ++i){
let color = Math.floor(Math.random() * 256).toString(16)
color = color.length == 1 ? '0' + color : color
rgb.push(color)
}
return '#' + rgb.join('')
}
```
### 隐式转换
```javascript
let stringNum = "123"; // String - 0
stringNum - 0 = 123; // Number
let num = 123; // Number
num + "" = "123"; //String
```
### 正则表达式验证
```javascript
/*是否带有小数*/
function isDecimal(strValue ) {
var objRegExp= /^\d+\.\d+$/;
return objRegExp.test(strValue);
}
/*校验是否中文名称组成 */
function ischina(str) {
var reg=/^[\u4E00-\u9FA5]{2,4}$/; /*定义验证表达式*/
return reg.test(str); /*进行验证*/
}
/*校验是否全由8位数字组成 */
function isStudentNo(str) {
var reg=/^[0-9]{8}$/; /*定义验证表达式*/
return reg.test(str); /*进行验证*/
}
/*校验电话码格式 */
function isTelCode(str) {
var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
return reg.test(str);
}
/*校验邮件地址是否合法 */
function IsEmail(str) {
var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
return reg.test(str);
}
```
### 倒计时
```javascript
function leftTimer(enddate) {
var leftTime = (new Date(enddate)) - new Date(); //计算剩余的毫秒数
var days = parseInt(leftTime / 1000 / 60 / 60 / 24, 10); //计算剩余的天数
var hours = parseInt(leftTime / 1000 / 60 / 60 % 24, 10); //计算剩余的小时
var minutes = parseInt(leftTime / 1000 / 60 % 60, 10); //计算剩余的分钟
//var seconds = parseInt(leftTime / 1000 % 60, 10); //计算剩余的秒数
days = checkTime(days);
hours = checkTime(hours);
minutes = checkTime(minutes);
// seconds = checkTime(seconds);
if (days >= 0 || hours >= 0 || minutes >= 0 || seconds >= 0)
that.setData({
time_str: "剩余时间" + days + "天" + hours + "小时" + minutes + "分" ,//+ seconds + "秒"
})
// && seconds <= 0
if (days <= 0 && hours <= 0 && minutes <= 0 ) {
clearInterval(_ordertimer);
_ordertimer = null;
that.setData({
time_over: true,
is_close: true,
is_open: false,
})
}
}
function checkTime(i) { //将0-9的数字前面加上0,例1变为01
if (i < 10) {
i = "0" + i;
}
return i;
}
function go(v) {
clearInterval(_ordertimer);
var date1 = new Date(),
data2 = new Date(v);
if (data2 < date1) {
that.setData({
time_over: true,
is_close:true,
is_open:false,
})
return; //设置的时间小于现在时间退出
}
_ordertimer = setInterval(function() {
leftTimer(data2)
}, 1000);
}
go('2018/12/31 00:00:00');
```
### 字符串出现次数做多的排序
```javascript
function sortStringByCount(argc){
if (typeof(argc) !== "string" || argc.constructor !== String) {//constructor 属性返回所有 JavaScript 变量的构造函数
return argc;
}else{
dealtArgc = argc.split('').sort().join('');//将字符串分割输出数组,然后对数组排序,再转换成字符串
newStr = dealtArgc.match(/(.)\1{0,}/g).sort(function(a,b){//match输出的是数组形式,然后用sort排序,最后用join转成字符串
return b.length - a.length
}).join('');
return newStr;
}
}
console.log(sortStringByCount('asdasdasdasdasdasdfsdgdfgdfgdfgerter'));
```
### cookie
```javascript
function setCookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}
//取回cookie
function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=")
if (c_start!=-1)
{
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) c_end=document.cookie.length
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment