js常用方法集合
1.数组去重
// 思路:获取没重复的最右一值放入新数组
/*
* 推荐的方法
*
* 方法的实现代码相当酷炫,
* 实现思路:获取没重复的最右一值放入新数组。
* (检测到有重复值时终止当前循环同时进入顶层循环的下一轮判断)*/
function uniq(array){
var temp = [];
var index = [];
var l = array.length;
for(var i = 0; i < l; i++) {
for(var j = i + 1; j < l; j++){
if (array[i] === array[j]){
i++;
j = i;
}
}
temp.push(array[i]);
index.push(i);
}
console.log(index);
return temp;
}
2.常用很正则校验
//校验输入内容
function clearNoNum(obj) {
//先把非数字的都替换掉,除了数字和.
obj.value = obj.value.replace(/[^\d.]/g, "");
//保证只有出现一个.而没有多个.
obj.value = obj.value.replace(/\.{2,}/g, ".");
//必须保证第一个为数字而不是.
obj.value = obj.value.replace(/^\./g, "");
//保证.只出现一次,而不能出现两次以上
obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
//只能输入两个小数
obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');
//只能输入0~100
obj.value = onj.value.replace(/^((?!0)\d{1,2}|100)$/,"");
}
3.将long形式的时间转化为格式化日期
//前台获取后台后台传来的日期格式会自动转化为long数字类型,需要在前台对数字类型进行格式化
//模板代码 仅供参考
Date.prototype.format = function(f){
var o ={
"M+" : this.getMonth()+1, //month
"d+" : this.getDate(), //day
"h+" : this.getHours(), //hour
"m+" : this.getMinutes(), //minute
"s+" : this.getSeconds(), //second
"q+" : Math.floor((this.getMonth()+3) /3), //quarter
"S" : this.getMilliseconds() //millisecond
}
if(/(y+)/.test(f))f=f.replace(RegExp.$1,(this.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)
if(new RegExp("("+ k +")").test(f))f = f.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));return f
} var t=1347497754133;
var d= new Date();
d.setTime(t);
var s=d.format('yyyy-MM-dd hh:mm:ss');
alert(s);
4.后台对json特殊符号的转义
/**
* 转换特殊字符,将json串转换为JS能直接识别的json
* json中如果含有单引号 或者特殊字符,前台json.parse()函数在解析时会报错
* 因此需要在后台进行转义
* @param oldJson
* @return
*/
public static String getJsonForJS(String oldJson) {
String newJson = oldJson;
newJson = newJson.replaceAll("\\\\", "\\\\\\\\");
newJson = newJson.replaceAll("\\'", "\\\\'");
newJson = newJson.replaceAll("\\\"", "\\\\\"");
return newJson;
}
5.js兼容性的页面关闭方式
//新版本谷歌和火狐的兼容性关闭方法
//场景:如果存在父页面window.close()有效
//如果没有父页面直接window.close()就会出现Scripts may close only the windows that were opened by it.导致页面点击无反应
function cancle() {
var userAgent = navigator.userAgent;
if (userAgent.indexOf("Firefox") != -1 || userAgent.indexOf("Chrome") != -1) {
if(window.opener == null) {
window.location.href = "about:blank";
} else {
window.close();
}
} else {
window.opener = null;
window.open("", "_self");
window.close();
}
}
6.my97datapicker日期间隔设置
//最好使用WdatePicker提供的表达式去计算,自行计算然后使用字符串设置回出现问题
//时间间隔控制在30天之间
WdatePicker({
readOnly: 'true',
dateFmt: 'yyyy-MM-dd',
onclearing: function () {
showAlert("日期必须被选择。");
return true;
},
maxDate: '#F{$dp.$D(\'endTime\')}',
minDate: '#F{$dp.$D(\'endTime\',{d:-29})}'
})
WdatePicker({
readOnly: 'true',
dateFmt: 'yyyy-MM-dd',
onclearing: function () {
showAlert("日期必须被选择。");
return true;
},
minDate: '#F{$dp.$D(\'startTime\')}',
maxDate: '#F{$dp.$D(\'startTime\',{d:29})}'
})
//月份间隔控制在11个月之间
WdatePicker({
readOnly: 'true',
dateFmt: 'yyyy-MM',
onclearing: function () {
showAlert("日期必须被选择。");
return true;
},
maxDate: '#F{$dp.$D(\'endTime\')}',
minDate: '#F{$dp.$D(\'endTime\',{d:-11})}'
})
WdatePicker({
readOnly: 'true',
dateFmt: 'yyyy-MM',
onclearing: function () {
showAlert("日期必须被选择。");
return true;
},
minDate: '#F{$dp.$D(\'startTime\')}',
maxDate: '#F{$dp.$D(\'startTime\',{d:11})}'
})
7.虚拟机设置
-server -XX:PermSize=128M -XX:MaxPermSize=128M
8.js判断数组中是否有重复数据
function isRepeat(arr) {
var hash = {};
for(var i in arr) {
if(hash[arr[i]]) {
return true;
}
hash[arr[i]] = true;
}
return false;
}
js常用方法集合的更多相关文章
- (2)Underscore.js常用方法
目录 1.集合相关方法 1.1.数组的处理 map(循环,有返回值),将返回的值依次存入一个新的数组 each(循环,无返回值 ...
- js算法集合(一) 水仙花数 及拓展(自幂数的判断)
js算法集合(一) ★ 最近有些朋友跟我说对js中的一些算法感到很迷惑,知道这个算法到底是怎么回事,但是就是不会用代码把它写出来,这里我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法, ...
- js算法集合(二) javascript实现斐波那契数列 (兔子数列)
js算法集合(二) 斐波那契数列 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列进行研究,来加深对循环的理解. Javascript实 ...
- js 遍历集合删除元素
js 遍历集合删除元素 /** * 有效的方式 - 改变下标,控制遍历 */ for (var i = 0; i < arr.length; i++) { if (...) { arr.spli ...
- JS中集合对象(Array、Map、Set)及类数组对象的使用与对比
原文地址 在使用js编程的时候,常常会用到集合对象,集合对象其实是一种泛型,在js中没有明确的规定其内元素的类型,但在强类型语言譬如Java中泛型强制要求指定类型. ES6引入了iterable类型, ...
- js library 集合
js library 集合 查看已经开源的js library https://cdnjs.com/
- js常用方法和检查是否有特殊字符串和倒序截取字符串
js常用方法demo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...
- 数据结构与算法 --- js描述集合
js描述集合 function Set(){ this.datasource=[]; this.add=add; this.remove=remove; //this.size=size; //thi ...
- JS 数组,对象常用方法 集合
数组 1.数组去重: 主要是使用的 new Set() 方法 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Referen ...
随机推荐
- 【windows 操作系统】窗口指针 和 窗口句柄 有什么区别
句柄是指针的"指针" 指针对应着一个数据在内存中的地址,得到了指针就可以自由地修改该数据.Windows并不希望一般程序修改其内部数据结构,因为这样太不安全.所以Windows给每 ...
- 【Windows 操作系统】Windows 进程的内核对象句柄表
总结: 1.句柄就是进程句柄表中的索引.2.句柄是对进程范围内一个内核对象地址的引用,一个进程的句柄传给另一个进程是无效的.一个内核对象可用有多个句柄.Windows之所以要设立句柄,根本上源于内存管 ...
- IDEA 配置安卓(Android)开发环境
今天用idea配了一下环境,安装了SDK和Gradle.找了一些学习的资源,明天正式开始学习,配置环境的(3条消息) 用IntelliJ IDEA 配置安卓(Android)开发环境(一条龙服务,新手 ...
- ABP 使用ElasticSearch、Kibana、Docker 进行日志收集
ABP 使用ElasticSearch.Kibana.Docker 进行日志收集 后续会根据公司使用的技术,进行技术整理分享,都是干货哦别忘了关注我!!! 最近领导想要我把项目日志进行一个统一收集,因 ...
- docker学习笔记(1)——ubuntu16.04安装docker(含如何彻底卸载docker,docker拉取镜像失败解决)
参考博客: 1.官网教程:https://docs.docker.com/engine/install/ 根据本机不同的信息选择不同的安装方式: https://docs.docker.com/ ...
- 五、Java控制流程
Java流程控制* 用户交互Scanner.Scanner进阶使用 用户交互Scanner 之前我们学习的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获 ...
- 面试官:Redis的共享对象池了解吗?
我正在面试间里焦急地等待着,突然听到了门外的脚步声,随即门被打开,穿着干净满脸清秀的青年走了进来,一股男士香水的淡香扑面而来. 面试官:"平时在工作中用过Redis吗?" 我:&q ...
- linux作业--第十一周
1. 导入hellodb.sql生成数据库 (1) 在students表中,查询年龄大于25岁,且为男性的同学的名字和年龄 (2) 以ClassID为分组依据,显示每组的平均年龄 (3) 显示第2题中 ...
- laravel7 h-ui模板点改
1:html页面 <td> @if($item->fang_status == 0) <span onclick="changeFangStatus(this,{{$ ...
- 解决 Vue 项目 invalid host header 问题(两种方案)
问题出现背景 做微信H5网页时,使用花生壳内网穿透进行调试时,打开网页显示:invalid host header 分析问题 这句话的意思是:无效的Host请求头: 因为在vue在调试时相当于启动了一 ...