this的总结
- 当元素身上的事件被触发的时候,会执行一个函数,函数中的this指向当前这个元素
- 自执行函数中的this,永远指向window
- 当函数被调用的时候,点前面是谁,this就是谁;如果前面没有点,说明这个函数被window调用,this就是window
- 回调函数中的this一般都是window,如果需要我们可以改变回调函数中的this指向
回调函数:当把函数的定义阶段,作为参数,传给另一个函数的时候,这个函数就是回调 callback\cb
ary.sort(function(){})
ary.forEach(function(){},thisArg)
ary.map(cb,thisArg)
数组的常用方法
- 增加,删除和替换
- push() 末尾增加一项
- pop() 末尾删除一项
- shift() 开头删除一项
- unshift() 开头增加一项
- splice()
- splice(1)/splice(1,3)删除
- splice(2,0,'xxx') 增加
- splice(2,1,'xxx') 替换
- 克隆和拼接
- concat() 数组拼接
- slice(n,m) 从索引n开始克隆到索引m包前不包后
- 翻转和排序
- reverse() 数组翻转
- sort(function(a,b){return a-b}) 排序
- 数组转字符串
- toString()
- join('拼接形式') 配合eval可以进行数学运算
- 常用但不兼容
- indexOf()
- ary.indexOf(newAry(i)); 没有找到返回-1 找到返回索引
- forEach(callback,thisArg) 无返回值
- callback(item,index,input);
- map() 有返回值
- indexOf()
Math常用方法
- Math.round() 四舍五入取整
- Math.random() 取0~1之间的随机小数 不包含1
- Math.round(Math.random()*(m-n)+n);取n~m之间的随机整数包含m
- Math.floor() 向下取整
- Math.ceil() 向上取证
- Math.abs() 取绝对值
- Math.pow(2,3) 幂次方
- Math.sqrt() 开平方
- Math.max() 最大值
- Math.min() 最小值
数组去重
- 双重循环
- 先sort排序,相邻两项进行对比
- 创建新数组,indexOf判断是否有某个值,没有进行插入
- 利用对象不重名特性
- 利用对象不重名特性 for循环给对象相同属性名的进行次数记录,for...in循环拿到属性名
插排
- 1、先从ary中取出一个left数组
- 2、遍历ary数组,与left从后往前进行比较。如果比left小,继续向前比;比某个值大就插入到这个值的下一项的前面;break;如果比所有的都小,那就插入到left数组的第一个
快排
- 1、先拿到中间索引——拿到中间项centerValue
- 2、创建left,right两个空数组
- 3、循环数组每一项与centerValue进行比较,小的放left,大的放right
- 4、利用递归进行自己调用自己
- 5、当ary.length<=1停止拆分
冒排
1、两重循环,第一重循环代表的是轮数,第二重循环代表的次数,比较的次数在一次次的减少;
2、 每次比较的时候,都拿当前项跟后一项进行比较,如果比他大,交换位置;
字符串常用的方法
通过下标找字符
- charAt() 下标找字符
- charCodeAt() 下标找字符对应的字符编码
通过字符找下标
- indexOf() 从前往后找,找到返回对应索引,没找到返回-1
- lastIndexOf() 从后往前找
字符串的截取和查找 (原字符串不发生改变)
- str.slice(n,m) 从索引n找到索引m,包前不包后;可以取负值
- str.substring(n,m)从索引n找到索引m,包前不包后
- str.substr(n,m) 从索引n开始,截取m个;
字符串转数组
- split('切割形式')
字符串转大小写
- toUpperCase()转大写
- toLowerCase()转小写
字符串跟正则配合的方法
- replace(字符串/正则,替换成什么) 字符串替换
- search(查找的字符串/正则)
- split(切割形式/正则)
- match(字符串/正则) 把捕获的内容,以数组的形式返回;
- 捕获一个,返回数组(item,index,input);
- 捕获不到,返回null
i++ 和 ++i
- i++ 先运算 再自增
- ++i 先自增 再运算
定时器
- setInterval(clearInterval) 隔一段时间触发一次
- setTimeout(clearTimeout) 只执行一次
日期对象
- 定义一个日期对象 var oDate=new Date()
- 获取现在距离 1970年1月1日 00:00:00 的毫秒数
- 格林尼治时间 oDate.getTime();
- oDate.getFullYear() 年
- oDate.getMonth()+1月
- oDate.getDate()日
- oDate.getDay() 星期日是0
- oDate.getHours()时
- oDate.getMinutes();分
- oDate.getSeconds();秒
倒计时
- 设置未来时间 new Date('2018/10/12 18:00:00')
- 求毫秒差
- new Date('2018/10/12 18:00:00')-new Date()
- new Date('2018/10/12 18:00:00').getTime()-new Date().getTime()
- 秒转换:把秒转成 天,时,分,秒 ; 主要用到%的思想;
- 注意:当秒位负数的时候,需要做处理;
- 求毫秒差