js封装的一些常用方法
2019-04-14 本文已影响13人
前端小菜鸟_简单
整理自己常用的一些封装方法
1.数组按照指定长度拆分
// 数组按指定长度拆分
function chunk (data, count) {
var result = []
for (var i = 0, len = data.length; i < len; i += count) {
result.push(data.slice(i, i + count))
}
return result
}
2.删除数组中指定元素
/**
* 删除数组中指定元素
* @param arr
* @param val
*/
function removeByValue (arr, val) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] == val) {
arr.splice(i, 1)
break
}
}
}
3.将小数指定到精确位置
/**
* 将小数字符串精确到指定位数
* @param num string 字符串类型的小数
* @param index int 精确到小数点第几位
*/
function roundFloat (num, index) {
return Number(num).toFixed(index)
}
4.根据微妙时间戳获取年月日时分秒
/**
* 根据微妙时间戳获取年月日时分秒
* @param microtime unix微妙时间戳
* @returns {string} yyyy-mm-dd hh:mm:ss
*/
function getNowFormatDate (microtime) {
var date = new Date(microtime)
var month = date.getMonth() + 1
var strDate = date.getDate()
var strHour = date.getHours()
var strMinute = date.getMinutes()
var strSeconds = date.getSeconds()
if (month >= 1 && month <= 9) {
month =`0${month}`
}
if (strDate >= 0 && strDate <= 9) {
strDate = `0${strDate}`
}
if (strHour >= 0 && strHour <= 9) {
strHour = `0${strHour}`
}
if (strMinute >= 0 && strMinute <= 9) {
strMinute = `0${strMinute}`
}
if (strSeconds >= 0 && strSeconds <= 9) {
strSeconds = `0${strSeconds}`
}
var currentdate =`${date.getFullYear()}-${month }-${strDate} ${strHour}:${strMinute}:${strSeconds}`
return currentdate
}
5.获取指定日的当周周一
/**
* 获取指定日的当周周一
* @param time 毫秒时间戳
* @returns {string}
*/
function getMonday (time) {
let today = new Date(time).getDay() === 0 ? 7 : new Date(time).getDay()
let timeStr = new Date(time).getTime()
let mondayStr = timeStr - (today - 1) * 3600 * 24 * 1000
return getNowFormatDate(mondayStr).split(' ')[0] + ' 00:00:00'
}
6.获取指定日的当周周日
/**
* 获取指定日的当周周日
* @param time 毫秒时间戳
* @returns {string}
*/
function getSunday (time) {
let today = new Date(time).getDay() === 0 ? 7 : new Date(time).getDay()
let timeStr = new Date(time).getTime()
let sundayStr = timeStr + (7 - today) * 3600 * 24 * 1000
return getNowFormatDate(sundayStr).split(' ')[0] + ' 23:59:59'
}
7.二维数组分组排序
/*
@params arr 要排序的数组
@params group 要分组的键
*/
function arrayGroupby (arr, key) {
var result = {}
arr.forEach(function (child, i) {
if (!(child[key] in result)) {
result[child[key]] = []
}
result[child[key]].push(child)
})
return result
}
8.输入正确的数值
/**
* 输出正确的数值
* @param val
* @param changedVal
* @returns {Number}
*/
function echoTrueNumber (val, changedVal) {
if (val === 0 || val === '0') {
return parseFloat(val)
}
return val ? parseFloat(val) : changedVal
}
9.根据数字字符串获取小数位位数
/**
* 根据数字字符串获取小数位位数
* @param num
* @returns {number}
*/
function getIndexLength (num) {
num = Number(num).toString()
let length = 0
if (typeof num.split('.')[1] === 'undefined') {
if (num.indexOf('-') > 0) {
// 0.0000001,1e-7科学计数法
length = Number(num.split('-')[1])
} else {
// 整数
length = 0
}
} else {
// 普通的小数0.121562
length = num.split('.')[1].length
}
return length
}
10.去字符串所有空格
/**
* 去掉字符串所有空格
* @param {String} Str
*/
//去字符串所有空格
function stringTrim(Str) {
return Str.replace(/(^\s+)|(\s+$)/g, '')
}
11.数组去重
/**
* 数组去重
* @param {Array} arr
* @returns {Array}
*/
function arrayUnique(arr) {
var newArr = []
for (var i = 0, len = arr.length; i < len; i++) {
for (var j = i + 1; j < len; j++) {
if (arr[i] === arr[j]) {
//获取没重复的最右一值放入新数组
++i
}
}
newArr.push(arr[i])
}
return newArr
}
12.判断是pc端还是移动
function IsPC() {
let userAgentInfo = navigator.userAgent
let Agents = [
'Android',
'iPhone',
'SymbianOS',
'Windows Phone',
'iPad',
'iPod'
]
let flag = true
for (let v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) {
flag = false
break
}
}
return flag
}
//判断手机端域名
export const DeviceState = (function Device() {
if (window.location.host.slice(0, 1) === 'm' || !IsPC()) {
console.log("手机端")
return true
} else {
console.log("pc端")
return false
}
})()