整理自己常用的一些封裝方法
1.數組按照指定長度拆分
// 數組按指定長度拆分
export 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
}
})()
常用的一些方法會不斷的更新,之前做的老項目沒有整理過,會在以後的項目中不斷整體新的東西,讓自己更好的學習前端的技術!!!