数组操作
数组转换成字符串,默认连接字符是逗号( ,)
arr.join("-")
把里面的内容添加到数组末尾,并返回修改后的长度。
arr.push("a","b");
移除数组最后一项,返回移除的那个值,减少数组的length。
arr.pop():
删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined
arr.shift();
添加到原数组开头,并返回数组的长度 。
arr.unshift("A","B");
将数组里的项从小到大排序,比较的是字符串不是数字
arr.sort( )
反转数组项的顺序。
arr.reverse( )
添加到原数组,返回新数组。
newArr = arr.concat(9,[11,13]);
指定开始下标到结束下标组成的新数组,不包括结束位置。只有一个参数,返回从该参数指定位置开始到当前数组末尾。如果有两个参数。
arr.slice(1 , 5)
splice():删除、插入和替换。
删除:2个参数,要删除的第一项的位置和要删除的项数。
arr.splice( 1 , 3 )
插入:3 个参数:起始位置、 0(要删除的项数)和要插入的项。
arr.splice( 2,0,4,6 )
替换: 3 个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。
arr.splice( 2,2,4,6 )(删除两个,再插入2个,也可以插入3个)
indexOf() 和 lastIndexOf() 从前查和从后差
arr.indexOf(5)
arr.forEach(function(item, index){});
var newArr = arr.map(function(item){
return item;
});
var newArr = arr.filter(function(item, index) {
return item
});
字符串替换
str.replace("需要替换的字符串","新字符串")
str.replace(/需要替换的字符串/g,"新字符串")
字符串、数组/Json 互转
//数组转字符串
var a =[a,b,c,d]
b = a.join(",");
//字符串转数组
var b = "a,b,c,d";
a = b.split(",");
//可以将json字符串转换成json对象
JSON.parse(jsonStr);
//可以将json对象转换成json对符串
JSON.stringify(jsonObj);
substr和substring
substr(start,length) 第一个字符的索引是0,start必选 length可选
substring(start, end) 第一个字符的索引是0,start必选 end可选(不包含end)
//当只有一个参数时,两者相同,返回从start指定的位置直到字符串结束的子串
var str = "hello";
str.substr(3); //lo
str.substring(3); //lo
//注意
substr 当length为0或者负数,返回空字符串
substring 以 start 和 end 两者中的较小值作为子字符串的起始点,start 或 end 为 NaN 或者负数,那么将其替换为0
Math常用
Math.random(); //0.0 ~ 1.0 之间的一个伪随机数。【包含0不包含1】
Math.ceil(); //向上取整。
Math.floor(); //向下取整。
Math.round(); //四舍五入。
获取文本行数
$('.desc').each(function(){
var styles = window.getComputedStyle(this, null);
var lh = parseInt(styles.lineHeight, 10); //行高
var h = parseInt(styles.height, 10); //控件高度
var lc = Math.round(h / lh); //文字行数
// console.log(lh+"--"+h)
// console.log(lc)
if(lc==4){
$(this).next().show()
}else{
$(this).next().hide()
}
})
滚动触底
$(window).scroll(function() {
if(($(window).scrollTop() + $(window).height() > $(document).height()-10) && !ajax){
if(maxPage>1 && page<maxPage && !ajax){
ajax=!0;//注明开始ajax加载中
page++;
if(page>=2){
$('.back-to-top').show();
}
util.getData(page)
}
}
});
滚动回到顶部
$('html,body').animate({scrollTop: '0px'}, 800);
滚动到指定位置
var windowHeight = $(window).height();
var h = $('.toopen').offset().top
$(window).scrollTop(h-windowHeight+80)
滚动悬浮 position: sticky; top: 0;
.top-tab{
width: 100%;
height: .86rem;
background: #fff;
}
.top-tab.fixed{
position: fixed;
top: 0;
}
<div class="top-tab toptab-scroll"></div>
<div class="top-tab fixed"></div>
$(window).scroll(function() {
var topTabY = $('.toptab-scroll').offset().top;
if($(window).scrollTop()>=topTabY){
$('.fixed').show()
}else{
$('.fixed').hide()
}
});
判断字符串结尾
//str是否以target结尾
function confirmEnding(str, target) {
var start = str.length - target.length;
var arr = str.substr(start, target.length);
if (arr == target) {
return true;
}
return false;
}
正则电话号码
function checkMobile(mobile) {
var re = /^1\d{10}$/
if (re.test(mobile)) {
// console.log("正确");
return true
} else {
// console.log("错误");
return false
}
}
正则标签中图片地址
var str = "this is test string <img src=\"http:baidu.com/test.jpg\" width='50' > 1 and the end <img src=\"所有地址也能匹配.jpg\" /> 33! <img src=\"/uploads/attached/image/20120426/20120426225658_92565.png\" alt=\"\" />"
var imgReg = /<img.*?(?:>|\/>)/gi;
var srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/i;
var arr = str.match(imgReg); // arr 为包含所有img标签的数组
经纬度计算距离
// 方法定义 lat,lng
function getDistance( lat1, lng1, lat2, lng2){
var radLat1 = lat1*Math.PI / 180.0;
var radLat2 = lat2*Math.PI / 180.0;
var a = radLat1 - radLat2;
var b = lng1*Math.PI / 180.0 - lng2*Math.PI / 180.0;
var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) +
Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
s = s *6378.137 ;// EARTH_RADIUS;
s = Math.round(s * 10000) / 10;
return s;
}
// 调用 return的距离单位为m
//getDistance(10.0,113.0,12.0,114.0)
对象key ,首字母小写
function toLowerCaseObjectKey(jsonObj) {
if(typeof(jsonObj)=='object'){
for (var key in jsonObj){
let value = jsonObj[key]
if(value instanceof Array){
for(var item of value){
if(typeof(item)=='object'){
toLowerCaseObjectKey(item)
}
}
}
//需要特殊处理的字符串
let condition = ['URL','UUID']
if(condition.includes(key)){
jsonObj[key.toLowerCase()] = jsonObj[key];
}else{
jsonObj[key.substring(0,1).toLowerCase()+key.substring(1)] = jsonObj[key];
}
delete(jsonObj[key]);
}
return jsonObj;
}
}
获取地址栏url上的某个query参数
function getUrlQuery(name) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
var r = location.search.substr(1).match(reg);
if (r != null) {
return unescape(r[2]);
}
return null;
}
sessionStorage
function saveStorage(value){
sessionStorage.setItem("hasGo",value);
}
function loadStorage(){
return sessionStorage.getItem("hasGo");
}
document.cookie = "auth_id=" + auth_id + ";domain=.domain.com;path=/";