js常用的工具函数整理

文章时效性提示

这是一篇发布于 2900天前 的文章部分信息可能已经过时,请甄别后使用。

随机从数组中取出count个元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* @param {[type]} 数组
* @param {[type]} 取出元素的个数
* @return {[type]} [description]
*/
function getRandomArrayElements(arr, count) {
var shuffled = arr.slice(0),
i = arr.length,
min = i - count,
temp, index;
while (i-- > min) {
index = Math.floor((i + 1) * Math.random());
temp = shuffled[index];
shuffled[index] = shuffled[i];
shuffled[i] = temp;
}
return shuffled.slice(min);
}
JAVASCRIPT

数组去重

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//数组去重复
Array.prototype.distinct = function() {
var arr = this,
result = [],
i,
j,
len = arr.length;
for (i = 0; i < len; i++) {
for (j = i + 1; j < len; j++) {
if (arr[i] === arr[j]) {
j = ++i;
}
}
result.push(arr[i]);
}
return result;
};
JAVASCRIPT

删除数组中的某个对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*删除数组中的某一个对象
_arr:数组
_obj:需删除的对象
*/
function removeAaary(_arr, _obj) {
var length = _arr.length;
for (var i = 0; i < length; i++) {
if (_arr[i] == _obj) {
if (i == 0) {
_arr.shift(); //删除并返回数组的第一个元素
return _arr;
} else if (i == length - 1) {
_arr.pop(); //删除并返回数组的最后一个元素
return _arr;
} else {
_arr.splice(i, 1); //删除下标为i的元素
return _arr;
}
}
}
}
JAVASCRIPT

获取滚动条离顶端的距离

1
2
3
4
5
6
7
8
9
10
11
function getScrollTop() {
var scrollPos;
if (window.pageYOffset) {
scrollPos = window.pageYOffset;
} else if (document.compatMode && document.compatMode != 'BackCompat'){
scrollPos = document.documentElement.scrollTop;
} else if (document.body) {
scrollPos = document.body.scrollTop;
}
return scrollPos;
};
JAVASCRIPT

获取浏览器参数

1
2
3
4
5
6
7
8
9
10
11
12
/**
* @param {[type]} name 参数字符串
* @return {[type]} [description]
*/
function getQueryString(name) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
var r = window.location.search.substr(1).match(reg);
if (r != null) {
return decodeURI(r[2]);//中文参数也可解析
}
return null;
}
JAVASCRIPT

判断是否在微信浏览器中

1
2
3
4
5
6
7
8
function isWeixin() {
var ua = navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == "micromessenger") {
return true;
} else {
return false;
}
};
JAVASCRIPT

cookies操作

设置cookies

1
2
3
4
5
6
7
8
9
10
11
12
/**
* @param {[type]} c_name cookie名字
* @param {[type]} value cookie存的值
* @param {[type]} expiredays cookie过期时间
* @return {[type]} [description]
*/
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())
};
REASONML

获取cookies

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* @param {[type]} name cookie名字
* @return {[type]} [description]
*/
function getCookie(name) {
var search = name + "=" //查询检索的值
var returnvalue = ""; //返回值
if (document.cookie.length > 0) {
sd = document.cookie.indexOf(search);
if (sd != -1) {
sd += search.length;
end = document.cookie.indexOf(";", sd);
if (end == -1){
end = document.cookie.length;
}
returnvalue = unescape(document.cookie.substring(sd, end))
}
}
return returnvalue;
};
JAVASCRIPT

函数节流

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
* @param {[type]} method 延迟执行的函数
* @param {[type]} delay 延迟多久执行
* @return {[type]} duration 多长时间执行一次
*/
function throttle(method, delay, duration) {
var timer = null,
begin = new Date();
return function () {
var context = this,
args = arguments,
current = new Date();
clearTimeout(timer);
if (current - begin >= duration) {
method.apply(context, args);
begin = current
} else {
timer = setTimeout(function () {
method.apply(context, args);
}, delay);
}
}
};
JAVASCRIPT

函数防抖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
* 防抖函数
* @param method 事件触发的操作
* @param delay 多少毫秒内连续触发事件,不会执行
* @returns {Function}
* 使用
* window.onscroll = debounce(function () {
* let scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
* console.log('滚动条位置:' + scrollTop);
* },200)
*/
function debounce(method,delay) {
var timer = null;
return function () {
var self = this,
args = arguments;
timer && clearTimeout(timer);
timer = setTimeout(function () {
method.apply(self,args);
},delay);
}
}
JAVASCRIPT

判断鼠标滚动方向

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
** jquery判断鼠标的滚动方向
** 使用方法:getScrollDirection(function(direction) { console.log(direction) });
**/
function getScrollDirection( fn ) {
var $window = $(window),
beforeScrollTop = $window.scrollTop(),
fn = fn || function() {};
$window.scroll(function() {
var afterScrollTop = $window.scrollTop(),
delta = afterScrollTop - beforeScrollTop;
if( delta === 0 ) return false;
fn( delta > 0 ? "down" : "up" );
beforeScrollTop = afterScrollTop;
});
}

JAVASCRIPT

js常用的工具函数整理
https://think.geekfanfan.com/2016/02/11/js-comm-remark/
作者
梦想.家
发布于
2016年2月11日
许可协议