随机从数组中取出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); } 数组去重 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; }; 删除数组中的某个对象 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; } } } } 获取滚动条离顶端的距离 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; }; 获取浏览器参数 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; } 判断是否在微信浏览器中 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; } }; 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()) }; 获取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; }; 函数节流 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); } } }; 函数防抖 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); } } 判断鼠标滚动方向 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /** ** 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; }); }