整理自己常用的一些封裝方法
1.數(shù)組按照指定長度拆分
// 數(shù)組按指定長度拆分
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.刪除數(shù)組中指定元素
/**
* 刪除數(shù)組中指定元素
* @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.將小數(shù)指定到精確位置
/**
* 將小數(shù)字符串精確到指定位數(shù)
* @param num string 字符串類型的小數(shù)
* @param index int 精確到小數(shù)點(diǎn)第幾位
*/
function roundFloat (num, index) {
return Number(num).toFixed(index)
}
4.根據(jù)微妙時(shí)間戳獲取年月日時(shí)分秒
/**
* 根據(jù)微妙時(shí)間戳獲取年月日時(shí)分秒
* @param microtime unix微妙時(shí)間戳
* @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.獲取指定日的當(dāng)周周一
/**
* 獲取指定日的當(dāng)周周一
* @param time 毫秒時(shí)間戳
* @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.獲取指定日的當(dāng)周周日
/**
* 獲取指定日的當(dāng)周周日
* @param time 毫秒時(shí)間戳
* @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.二維數(shù)組分組排序
/*
@params arr 要排序的數(shù)組
@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.輸入正確的數(shù)值
/**
* 輸出正確的數(shù)值
* @param val
* @param changedVal
* @returns {Number}
*/
function echoTrueNumber (val, changedVal) {
if (val === 0 || val === '0') {
return parseFloat(val)
}
return val ? parseFloat(val) : changedVal
}
9.根據(jù)數(shù)字字符串獲取小數(shù)位位數(shù)
/**
* 根據(jù)數(shù)字字符串獲取小數(shù)位位數(shù)
* @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科學(xué)計(jì)數(shù)法
length = Number(num.split('-')[1])
} else {
// 整數(shù)
length = 0
}
} else {
// 普通的小數(shù)0.121562
length = num.split('.')[1].length
}
return length
}
10.去字符串所有空格
/**
* 去掉字符串所有空格
* @param {String} Str
*/
//去字符串所有空格
function stringTrim(Str) {
return Str.replace(/(^\s+)|(\s+$)/g, '')
}
11.數(shù)組去重
/**
* 數(shù)組去重
* @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]) {
//獲取沒重復(fù)的最右一值放入新數(shù)組
++i
}
}
newArr.push(arr[i])
}
return newArr
}
12.判斷是pc端還是移動(dòng)
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
}
//判斷手機(jī)端域名
export const DeviceState = (function Device() {
if (window.location.host.slice(0, 1) === 'm' || !IsPC()) {
console.log("手機(jī)端")
return true
} else {
console.log("pc端")
return false
}
})()
第一次在簡書上寫文章,不會(huì)太寫什么,只想從現(xiàn)在開始好好的記錄自己用知識(shí)點(diǎn),想讓自己每天都在進(jìn)步中~~~ 以后每周都會(huì)總結(jié)一周的用到的技術(shù),學(xué)到的新的技術(shù)遇到的難點(diǎn)裁蚁,也希望給簡書的朋友能學(xué)到一些東西
u=4247890049,3808382707&fm=26&gp=0.jpg