【js】前端 js/jquery 常用代码和实践
1.获取某天后几天的日期
//d为传入的日期 days为d后面的几天
function getAfterDate(d,days){
var dd = new Date(d);
dd.setDate(dd.getDate()+days);
var y = dd.getFullYear();
var m = dd.getMonth()+1;
var d = dd.getDate();
return y+"-"+m+"-"+d;
}
alert(getAfterDate('2019-02-28',1)) //打印出2019-03-01
2.检测浏览器是否支持canvas
function isSupportCanvas() {
return document.createElement('canvas').getContext ? true : false;
}
// 测试
alert(isSupportCanvas()); //true
3.根据日期计算年龄
function getAge(dateString) {
var today = new Date();
var birthDate = new Date(dateString);
var todayDateYear = today.getFullYear();
var birthDateYear = birthDate.getFullYear();
var age = todayDateYear - birthDateYear;
var m = today.getMonth() - birthDate.getMonth();
if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
age--;
}
return age;
}
4.求两个有序数组的交集
function arrayIntersection(a, b){
var a_index=0, b_index=0;
var result = new Array();
while( a_index < a.length && b_index < b.length )
{
if (a[a_index] < b[b_index] ) {
a_index++;
} else if (a[a_index] > b[b_index] ) {
b_index++;
} else {
//相等
result.push(a[a_index]);
a_index++;
b_index++;
}
}
return result;
}
alert(arrayIntersection([1,2,3],[1,3,4,5,6,9]));//[1,3]
5.根据后端返回的值 选中select
$("#select_id option[value='"+后端返回的值+"']").attr("selected","selected");
6.获取数组中的键
var arr = ["aa", "bb", "cc", "dd"];
var keys_arr = arr.keys(); //[object Array Iterator]
7.数组合并
var arr1 = [ 1, 2, 3, 4, 5 ];
var arr2 = [ "aa", "bb", "cc"];
var arr3 = arr1.concat(arr2); //concat不会去除重复的值
8.去重数组的值
function uniqueArr(array) {
var r = [];
//alert(array.length); 9
for (var i = 0, l = array.length; i < l; i++) {
for (var j = i + 1; j < l; j++){
//j = i++; j=0
//j = ++i; j=1
if (array[i] === array[j]) {
j = ++i;
}
}
r.push(array[i]);
}
return r;
}
alert(uniqueArr( [1, 2, 3 , '1', 2, '4',3, ,'6'])); //1,1,2,4,3,,6
9.对象的深拷贝
function deepCloneObj(initalObj, finalObj) {
var obj = finalObj || {};
for (var i in initalObj) {
var prop = initalObj[i];
//避免相互引用对象导致死循环,如initalObj.cloumn = initalObj的情况
if(prop === obj) {
continue;
}
if (typeof prop === 'object') {
obj[i] = (prop.constructor === Array) ? [] : Object.create(prop);
} else {
obj[i] = prop;
}
}
return obj;
}
var obj = {
a: {
a: "aaa",
b: "bbb"
}
}
var cloneObj = deepCloneObj(obj);
cloneObj.a.a = "changed";
alert(cloneObj.a.a); //changed
js深拷贝还可以用JSON.stringfy()和JSON.parse()实现 : JSON.parse(JSON.stringify(obj)) ,jQuery.extend()也实现了对象的深拷贝。
10.判断对象是否存在该属性
var map = {
'key': ''
};
alert('key' in map); //true
11.判断浏览器是否支持map和set
'use strict';
var m = new Map();
var s = new Set();
alert('该浏览器支持map和set'); //如果不报错输出这句话说明支持
12.jquery取消绑定事件
$(document).off("click", "div");
13.生成范围随机数
//生成从min到max的随机数
function randomNum(min,max){
switch(arguments.length){
case 1:
return parseInt(Math.random()*min+1,10);
break;
case 2:
return parseInt(Math.random()*(max-min+1)+min,10);
break;
default:
return 0;
break;
}
}
alert(randomNum(12));
Math.round(Math.random());//获取0到1的随机整数。
Math.random() 生成 [0,1) 的数,所以 Math.random()*10 生成 {0,10) 的数
parseInt() 和 Math.floor() 结果都是向下取整,所以要加1
14.函数柯里化
柯里化其实将需要多个参数的一个函数转换成一系列函数去执行。举个例子如下:
function add(a, b) {
return a + b;
}
//函数只能传一个参数时候实现加法
function curry(a) {
return function(b) {
return a + b;
}
}
var add2 = curry(5); //add2也就是第一个参数为5的add版本
alert(add2(5)); //输出8
可以看看这篇博客 https://github.com/mqyqingfeng/Blog/issues/42
15.节流 (不管怎么触发,都按照指定的间隔来执行)
function throttle(func, wait) {
var timer
return function() {
var context = this
var args = arguments
if (!timer) {
timer = setTimeout(function () {
timer = null
func.apply(context, args)
}, wait)
}
}
}
16.javascript中的LHS与RHS
LHS(Left-hand Side)引用和RHS(Right-hand Side)引用,表示对变量赋值和取变量值的不同操作方式。
17.javascript的Event Loop
JavaScript是单线程,就是同一个时间只能做一件事, JavaScript所有任务任务被分为Task(又称为MacroTask,宏任务)和MicroTask(微任务)两种,都是在两个地方执行:执行栈和任务队列。前者是存放同步任务;后者是异步任务有结果后,就在其中放入一个事件。
执行顺序:先跑执行栈里的同步任务,然后再跑任务队列的异步任务。
18.查找一个字符串在另一个字符串中出现了几次
function countInstances(Str, findStr){
var count = 0;
var offset = 0;
while(offset != -1){
offset = Str.indexOf(findStr, offset);//返回findStr在Str中首次出现的位置
if(offset != -1) {
count++;
offset += findStr.length;
}
}
return count;
}
alert(countInstances('aas"a"aasd','aa')); //2
19.相对当前域名链接跳转
self.location.href = '/employee/approval/Salary/myApprovalIndex'
20.调用浏览器打印
window.print();
21.去除字符串换行
function formatStr(str){
return str.replace(/[\r\n]/g,"");
}
【js】前端 js/jquery 常用代码和实践的更多相关文章
- jquery常用代码集锦
1. 如何修改jquery默认编码(例如默认GB2312改成 UTF-8 ) 1 2 3 4 5 $.ajaxSetup({ ajaxSettings : { contentT ...
- js|jquery常用代码
页面重定位: window.location.replace("http://www.bczs.net"); window.location.href = "http:/ ...
- JS~~~ 前端开发一些常用技巧 模块化结构 &&&&& 命名空间处理 奇技淫巧!!!!!!
前端开发一些常用技巧 模块化结构 &&&&& 命名空间处理 奇技淫巧!!!!!!2016-09-29 17 ...
- js及jquery常用代码
1.获取屏幕尺寸 document.documentElement.scrollWidth; document.documentElement.scrollHeight; $(window).widt ...
- Jquery学习总结(1)——Jquery常用代码片段汇总
1. 禁止右键点击 ? 1 2 3 4 5 $(document).ready(function(){ $(document).bind("contextmenu",fun ...
- jquery常用代码
转自:未找到 以下是jquery中比较常用的一些操作实现方式: $("标签名") //取html元素 document.getElementsByTagName("&qu ...
- jQuery常用代码片段
检测IE浏览器 在进行CSS设计时,IE浏览器对开发者及设计师而言无疑是个麻烦.尽管IE6的黑暗时代已经过去,IE浏览器家族的人气亦在不断下滑,但我们仍然有必要对其进行检测.当然,以下片段亦可用于检测 ...
- JQuery常用代码汇总
获取<input />的value $("#id").val( ); 标签间的html $("#id").html('<tr><t ...
- jQuery 常用代码集锦
1. 选择或者不选页面上全部复选框 var tog = false; // or true if they are checked on load $('a').click(function() { ...
随机推荐
- Centos7上安装docker
Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施.容器 ...
- vue框架入门和ES6介绍
vue框架入门和ES6介绍 vue-mvvm模式,vue是一种轻量级的前端框架,主要为模板渲染,数据同步,组件化,模块化,路由等. https://cn.vuejs.org/ 源码:https://g ...
- 移动开发基础-学习笔记二-字体图标、less、bootstrap入门
1.字体图标 1.字体图标都是用svg图片 1.svg图片不失真 2.svg图标由设计师提供 3.为了减少网络请求,会把svg图标转换成字体图标,放到字体文件中,通过字体库的方式使用 2.制作步骤 1 ...
- K3实现按虚拟件/组件发料
最近公司调度部反应了一个K3使用过程中遇到的巨大问题:公司成品BOM组成物料种类破千,绝大部分还不能拆分成组件.为了方便区分,从逻辑上把一堆堆的半成品分成了一个个虚拟件.K3生成的投料单 ...
- typescript中的接口
说到接口:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用.接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心 ...
- EditText搜索关键字,返回结果匹配关键字改变颜色
自己项目 用到EditText搜索结果关键字改变颜色,就研究了一下,2种方法实现,发现一个好用的工具类,在代码中一行调用这个方法,直接实现需求. KeywordUtil.java工具类. packag ...
- rocketmq延时消息
rocketmq提供一种延时消息的解决方案,就是在特定的时间到了,消息才会被投递出去供consumer消费. 总体来是简单的场景是满足了,但是需要注意的是延时的时间是需要按照默认配置的延时级别去配置的 ...
- Python 经典面试题汇总之框架篇
前端和框架 1.谈谈你对http协议的认识 浏览器本质,socket客户端遵循Http协议 HTTP协议本质:通过\r\n分割的规范,请求响应之后断开链接 ==> 短连接.无状态 具体: Htt ...
- swing Jframe 界面风格
用法:在jframe里面 UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel" ...
- 利用ZYNQ SOC快速打开算法验证通路(6)——利用AXI总线实时配置sysGen子系统
利用ZYNQ验证算法的一大优势在于,可以在上位机发送指令借助CPU的控制能力和C语言易开发特点,实时配置算法模块的工作模式.参数等对来对其算法模块性能进行全面的评估.最重要的是无需重新综合硬件模块. ...