export default {
arrItemSort(arrObj, keyName, type) {
var tempArrayobj = arrObj.slice(0)
var compare = function (keyName, type) {
return function (obj1, obj2) {
var val1 = obj1[keyName]
var val2 = obj2[keyName]
if (!isNaN(Number(val1) && !isNaN(Number(val2)))) {
val1 = Number(val1)
val2 = Number(val2)
}
if (val1 == null && val2 == null) {
return 0
} else if (val1 != null && val2 == null) {
return type == 1 ? -1 : 1
} else if (val1 == null && val2 != null) {
return type == 1 ? 1 : -1
}
if (val1 < val2) {
return type == 1 ? 1 : -1
} else if (val1 > val2) {
return type == 1 ? -1 : 1
} else {
return 0
}
}
}
return tempArrayobj.sort(compare(keyName, type))
},
export function replaceUndefinedWithNull(param) {
if (Array.isArray(data)) {
return data.map((item) => replaceUndefinedWithNull(item))
} else if (typeof data === 'object' && data !== null) {
const result = {}
for (const key in data) {
if (data.hasOwnProperty(key)) {
result[key] = replaceUndefinedWithNull(data[key])
}
}
return result
} else {
return data === undefined ? null : data
}
}
formatDate(date, format) {
let time = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'h+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds()
}
if (/(y+)/i.test(format)) {
format = format.replace(RegExp.$1, (date.getFullYear() + '').substring(4 - RegExp.$1.length))
}
for (let k in time) {
if (new RegExp('(' + k + ')').test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? time[k] : ('00' + time[k]).substr(('' + time[k]).length))
}
}
return format
},
getBeforeDate(n, date) {
var s = ''
var n = n
if (date) {
var d = new Date(date)
} else {
var d = new Date()
}
var year = d.getFullYear()
var mon = d.getMonth() + 1
var day = d.getDate()
if (day <= n) {
if (mon > 1) {
mon = mon - 1
} else {
year = year - 1
mon = 12
}
}
d.setDate(d.getDate() - n)
year = d.getFullYear()
mon = d.getMonth() + 1
day = d.getDate()
s = year + '-' + (mon < 10 ? '0' + mon : mon) + '-' + (day < 10 ? '0' + day : day)
return s
},
uninque(arr) {
var obj = {}
return arr.filter(function (item) {
return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
})
},
deleteObj(arr) {
var newarr = []
var obj = {}
for (var i = 0; i < arr.length; i++) {
var keys = Object.keys(arr[i])
keys.sort((a, b) => {
return Number(a) - Number(b)
})
var str = ''
for (var j = 0; j < keys.length; j++) {
str += JSON.stringify(keys[j])
str += JSON.stringify(arr[i][keys[j]])
}
if (!obj.hasOwnProperty(str)) {
newarr.push(arr[i])
obj[str] = true
}
}
newarr = newarr
return newarr
},
getDateM(date, format) {
let now = new Date(date)
let current_month_num = this.mGetDate(now)
let current_month = []
for (let i = 1; i <= current_month_num; i++) {
let day = now.setDate(i)
let everyDay = this.formatDate(new Date(day), format)
current_month.push(everyDay)
}
return current_month
},
mGetDate(date) {
var year = date.getFullYear()
var month = date.getMonth() + 1
var d = new Date(year, month, 0)
return d.getDate()
},
nowInDateBetween(d1, d2, d3) {
var dateBegin = new Date(d1)
var dateEnd = new Date(d2)
var dateNow = new Date(d3)
var beginDiff = dateNow.getTime() - dateBegin.getTime()
var beginDayDiff = Math.floor(beginDiff / (24 * 3600 * 1000))
var endDiff = dateEnd.getTime() - dateNow.getTime()
var endDayDiff = Math.floor(endDiff / (24 * 3600 * 1000))
if (endDayDiff < 0) {
return false
}
if (beginDayDiff < 0) {
return false
}
return true
},
sortData(info, params) {
var rankArr = []
var zeroArr = info.filter((ele, index) => {
if (Number(ele[params].substr(0, 1)) === 0) {
return !isNaN(Number(ele[params].substr(0, 1)))
}
})
zeroArr = zeroArr.sort((a, b) => {
return a[params].replace(/[^0-9]/gi, '') - b[params].replace(/[^0-9]/gi, '')
})
var numArr = info.filter((ele, index) => {
if (Number(ele[params].substr(0, 1)) !== 0) {
return !isNaN(Number(ele[params].substr(0, 1)))
}
})
numArr = numArr.sort((a, b) => {
return a[params].replace(/[^0-9]/gi, '') - b[params].replace(/[^0-9]/gi, '')
})
var reg = new RegExp('^[\u4e00-\u9fa5]')
var wordArr = info.filter((ele, index) => {
return reg.test(ele[params].substr(0, 1))
})
wordArr = wordArr.sort((a, b) => {
return a[params].localeCompare(b[params])
})
var regUpper = /^[A-Z]+$/
var upperArr = info.filter((ele, index) => {
return regUpper.test(ele[params].substr(0, 1))
})
upperArr = upperArr.sort((a, b) => {
return a[params].localeCompare(b[params])
})
var regSmallUpper = /^[A-Z]+$/
var upperSmallArr = info.filter((ele, index) => {
return regSmallUpper.test(ele[params].substr(0, 1))
})
upperSmallArr = upperSmallArr.sort((a, b) => {
return a[params].localeCompare(b[params])
})
var otherArr = info.filter((ele, index) => {
return isNaN(Number(ele[params].substr(0, 1))) && !reg.test(ele[params].substr(0, 1)) && !regUpper.test(ele[params].substr(0, 1))
})
otherArr = otherArr.sort((a, b) => {
return a[params].localeCompare(b[params])
})
rankArr = rankArr.concat(numArr, wordArr, upperArr, otherArr)
return rankArr
},
getIntervalTime(d1, d2) {
let date1 = new Date(d1)
let date2 = new Date(d2)
let dateDiff = date2.getTime() - date1.getTime()
let days = Math.floor(dateDiff / (24 * 3600 * 1000))
let residue1 = dateDiff % (24 * 3600 * 1000)
let hours = Math.floor(residue1 / (3600 * 1000))
let residue2 = dateDiff % (3600 * 1000)
let minutes = Math.floor(residue2 / (60 * 1000))
let residue3 = dateDiff % (60 * 1000)
let seconds = Math.round(residue3 / 1000)
let result = (days === 0 ? '' : days + '天') + (hours === 0 ? '' : hours + '时') + (minutes === 0 ? '' : minutes + '分') + (seconds === 0 ? '' : seconds + '秒')
return result
},
cloneDeep(obj) {
var copy = Object.create(Object.getPrototypeOf(obj));
var propNames = Object.getOwnPropertyNames(obj);
propNames.forEach(function(name) {
var desc = Object.getOwnPropertyDescriptor(obj, name);
Object.defineProperty(copy, name, desc);
});
return copy;
}
}