平常工作项目中可能会遇到一些公用的函数,我对我遇到的进行一下总结,后续遇到了再不定期进行更新.
1.获取url中的参数
url的参数可能以/分割,也可能以?分割,所以这里对这两种情况做一兼容.
function getQueryString(variable,num){
var temp = window.location.href;
//问号,variable为传入的参数名
if(variable && temp.indexOf('?')>=0){
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){return pair[1];}
}
return(false);
}else if(!variable && num && temp.indexOf('/')>=0){
//斜杠分割的情况,num表示url中参数的个数,这里默认参数都是在url结尾,若是在中间在想办法处理
var tempArray = temp.split('/');
if(tempArray && tempArray.length >= 1) {
tempArray=tempArray.slice(-num)
for(var i=0;i<tempArray.length;i++){
//去除冒号
if(tempArray[i][0]===':'){
tempArray[i]=tempArray[i].substring(1);
}
}
return tempArray;
}else{
return [];
}
}else{
throw new Error('方法调用错误')
}
}
更常见的简单的情况:以/分割,且只有一个参数,返回一个字符串:
function getQueryString(){
var temp = window.location.href;
var tempArray = temp.split('/');
if(tempArray && tempArray.length >= 1) {
var tempString = tempArray[tempArray.length - 1];
if(tempString[0]===':') tempString=tempString.substring(1);
return tempString;
}else {
return '';
}
}
2.数组去重
function unique(arr) {
var result = [], hash = {};
for (var i = 0, elem; (elem = arr[i]) != null; i++) {
if (!hash[elem]) {
result.push(elem);
hash[elem] = true;
}
}
return result;
}
3.对象数组去重
function handleRepeat(arr,prop) {
for(var i=0,arrLen=arr.length;i<arrLen;i++){
for(var j=i+1;j<arrLen;j++){
if(arr[j][prop]===arr[i][prop]){
arr.splice(j,1);
j--;
arrLen--;
continue;
}
}
}
return arr;
}
4.对象数组排序
function sortBy(property) {
return function(a,b) {
return a[property] - b[property];
}
}
5.获取上传的文件大小(以jquery为例,vue和react先获取dom元素)
function getFileSize(id){
var maxSize=64;
var target=$("#"+id)[0].files[0];
var fileSize = target.size/(1024*1024);
if(fileSize>64){
alert("上传单个文件大小不能超过64MB!");
return false;
}
}
6.格式化日期
//传入时间戳
function getLocalTime(nS) {
var now = new Date(nS);
if(!now){
return 0;
}else{
var year=now.getFullYear();//年
var month=now.getMonth()+1;//月
var date=now.getDate();//日
var hour=now.getHours();//时
var minute=now.getMinutes();//分
var second=now.getSeconds();//秒
return year+"-"+month+"-"+date +' '+hour+':'+minute+':'+second;
}
}